Ultimi argomenti attivi
» Mud - Errore sul civico: E' da reinviare?Da Paolo UD Lun Ago 05, 2024 10:51 am
» 1263 - curiosità
Da lotus1 Ven Ago 02, 2024 11:59 am
» Ritiro rifiuti da privati - Sentenza CdS 29 Maggio 2023 n. 5257
Da skywalker2016 Mar Lug 30, 2024 10:44 am
» marchio per un 3481
Da lotus1 Mar Lug 30, 2024 6:23 am
» mancate indizioni commissioni sezioni regionali
Da Hope Mar Lug 23, 2024 8:15 am
» www.rentri.gov.it
Da Input Gio Lug 11, 2024 4:12 pm
» Riferimenti operazioni di carico
Da Paolo UD Gio Lug 04, 2024 10:46 am
» adr macchinari contenenti olio
Da massimilianom Gio Giu 13, 2024 12:44 pm
» Annulla e sostituisci
Da Transporter Mar Giu 11, 2024 10:48 am
» registri per rifiuti da manutenzione
Da ambieco Mar Giu 04, 2024 1:47 pm
DLL per interoperabilita SISTRI e VS
2 partecipanti
Pagina 1 di 1
DLL per interoperabilita SISTRI e VS
Ciao a tutti,
grazie alle vostre indicazioni sono riuscito a collegarmi con un'applicazione scritta con VS 2008 al SISTRI. Adesso pero' per esigenze di interfacciamento volevo non creare un'applicazione ma una DLL che mettesse a disposizione i metodi necessari ad interrogare il SISTRI.
Qualcuno di voi sa se e' possibile passare il file app.config anche ad una DLL? ci sto sbattendo la testa da qualche giorno e non riesco a capire se e' fattibile e sono io che sbaglio oppure se non e' possibile. Nel caso non fosse possibile secondo voi e' possibile passare dinamicamente le varie voci di app.config??
Scusate ma sono abbastanza neofita di VS.
Grazie
Input
grazie alle vostre indicazioni sono riuscito a collegarmi con un'applicazione scritta con VS 2008 al SISTRI. Adesso pero' per esigenze di interfacciamento volevo non creare un'applicazione ma una DLL che mettesse a disposizione i metodi necessari ad interrogare il SISTRI.
Qualcuno di voi sa se e' possibile passare il file app.config anche ad una DLL? ci sto sbattendo la testa da qualche giorno e non riesco a capire se e' fattibile e sono io che sbaglio oppure se non e' possibile. Nel caso non fosse possibile secondo voi e' possibile passare dinamicamente le varie voci di app.config??
Scusate ma sono abbastanza neofita di VS.
Grazie
Input
Input- Utente Attivo
- Messaggi : 77
Data d'iscrizione : 20.04.11
Re: DLL per interoperabilita SISTRI e VS
Sì, basta definire una configSection nell'app.config che indichi una classe derivata da ConfigurationSection, in cui le proprietà abbiamo l'attributo ConfigurationProperty che indichi il nome delle proprietà. Ad esempio una classe così definita:
namespace MyNamespace {
public class MyConfig : ConfigurationSection {
[ConfigurationProperty ("myProperty")]
public string MyProperty {
get { return (string) base ["myProperty"]; }
set { base ["myProperty"] = value; }
}
}
}
La dichiari nell'app.config così:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="myConfigSection" type="MyNamespace.MyConfig, MyAssemblyName"/>
</configSections>
<myConfigSection myProperty="myValue" />
</configuration>
Per recuperare i valori è sufficiente una cosa del genere:
public void TestConfig () {
MyConfig myConfig = (MyConfig) ConfigurationManager.GetSection ("myConfigSection");
Console.WriteLine (myConfig.MyProperty);
}
namespace MyNamespace {
public class MyConfig : ConfigurationSection {
[ConfigurationProperty ("myProperty")]
public string MyProperty {
get { return (string) base ["myProperty"]; }
set { base ["myProperty"] = value; }
}
}
}
La dichiari nell'app.config così:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="myConfigSection" type="MyNamespace.MyConfig, MyAssemblyName"/>
</configSections>
<myConfigSection myProperty="myValue" />
</configuration>
Per recuperare i valori è sufficiente una cosa del genere:
public void TestConfig () {
MyConfig myConfig = (MyConfig) ConfigurationManager.GetSection ("myConfigSection");
Console.WriteLine (myConfig.MyProperty);
}
Input ha scritto:Ciao a tutti,
grazie alle vostre indicazioni sono riuscito a collegarmi con un'applicazione scritta con VS 2008 al SISTRI. Adesso pero' per esigenze di interfacciamento volevo non creare un'applicazione ma una DLL che mettesse a disposizione i metodi necessari ad interrogare il SISTRI.
Qualcuno di voi sa se e' possibile passare il file app.config anche ad una DLL? ci sto sbattendo la testa da qualche giorno e non riesco a capire se e' fattibile e sono io che sbaglio oppure se non e' possibile. Nel caso non fosse possibile secondo voi e' possibile passare dinamicamente le varie voci di app.config??
Scusate ma sono abbastanza neofita di VS.
Grazie
Input
riccardock- Membro della community
- Messaggi : 33
Data d'iscrizione : 08.11.13
Re: DLL per interoperabilita SISTRI e VS
Ok grazie.
Così dovrei riuscire a passare alcune proprietà leggendole dal app.config forse però mi sono espresso male nel primo post.
Il mio problema è fare in modo che anche con la DLL venga letto l'intero file app.config.
Se creo un'applicazione Windows con le indicazioni recuperate su questo forum e con il file app.config opportunamente modificato riesco ad interrogare il SIS mentre se il progetto è una DLL quando eseguo questo codice "Dim sisCLI = New ServiceReference1.SIS_WSDLClient()" ottengo in seguente messaggio di errore:
Impossibile trovare l'elemento endpoint predefinito che fa riferimento al contratto 'ServiceReference1.SIS_WSDL' nel servizio di configurazione client ServiceModel. È possibile che non sia stato trovato nessun file di configurazione per l'applicazione o che nell'elemento client non sia stato trovato un elemento endpoint corrispondente al contratto.
..è per questo che chiedevo come fare a far leggere correttamente il file app.config ad una DLL.
Oppure sto sbagliando strada?? :-)
grazie
Input
Così dovrei riuscire a passare alcune proprietà leggendole dal app.config forse però mi sono espresso male nel primo post.
Il mio problema è fare in modo che anche con la DLL venga letto l'intero file app.config.
Se creo un'applicazione Windows con le indicazioni recuperate su questo forum e con il file app.config opportunamente modificato riesco ad interrogare il SIS mentre se il progetto è una DLL quando eseguo questo codice "Dim sisCLI = New ServiceReference1.SIS_WSDLClient()" ottengo in seguente messaggio di errore:
Impossibile trovare l'elemento endpoint predefinito che fa riferimento al contratto 'ServiceReference1.SIS_WSDL' nel servizio di configurazione client ServiceModel. È possibile che non sia stato trovato nessun file di configurazione per l'applicazione o che nell'elemento client non sia stato trovato un elemento endpoint corrispondente al contratto.
..è per questo che chiedevo come fare a far leggere correttamente il file app.config ad una DLL.
Oppure sto sbagliando strada?? :-)
grazie
Input
Input- Utente Attivo
- Messaggi : 77
Data d'iscrizione : 20.04.11
Re: DLL per interoperabilita SISTRI e VS
Ah ok.
Il file di configurazione viene letto in automatico anche dalle DLL, ovviamente in deploy si deve chiamare come la dll ma con estensione aggiunta .config, tipo myLib.dll.config
Quell'errore, come dice il messaggio, può dipendere dalla mancanza o dall'errata compilazione del tag <system.serviceModel> con le sue apposite sezioni. In pratica devi fare il copia e in colla di tutto il nodo serviceModel dall'eseguibile alla dll.
Poi devi fare attenzione al nome del contratto: la sezione <client> del serviceModel contiene gli "endpoint", ogni endpoint ha un attributo "contract" il cui valore deve coincidere con la proprietà "ConfigurationName" dell'attributo "ServiceContractAttibute" che WCF applica all'interfaccia SIS_WSDL quando crea la Service Reference, tipo:
[System.ServiceModel.ServiceContractAttribute(Namespace="http://www.sistri.it/SIS_WSDL/", ConfigurationName="Service.SIS_WSDL")]
public interface SIS_WSDL {
...
}
In questo caso il contratto si chiama "Service.SIS_WSDL".
A me è capitato lo stesso problema facendo copia e incolla del nodo serviceModel da un altro progetto perché ho usato un nome diverso nella creazione del servizio remoto del SIS.
Il file di configurazione viene letto in automatico anche dalle DLL, ovviamente in deploy si deve chiamare come la dll ma con estensione aggiunta .config, tipo myLib.dll.config
Quell'errore, come dice il messaggio, può dipendere dalla mancanza o dall'errata compilazione del tag <system.serviceModel> con le sue apposite sezioni. In pratica devi fare il copia e in colla di tutto il nodo serviceModel dall'eseguibile alla dll.
Poi devi fare attenzione al nome del contratto: la sezione <client> del serviceModel contiene gli "endpoint", ogni endpoint ha un attributo "contract" il cui valore deve coincidere con la proprietà "ConfigurationName" dell'attributo "ServiceContractAttibute" che WCF applica all'interfaccia SIS_WSDL quando crea la Service Reference, tipo:
[System.ServiceModel.ServiceContractAttribute(Namespace="http://www.sistri.it/SIS_WSDL/", ConfigurationName="Service.SIS_WSDL")]
public interface SIS_WSDL {
...
}
In questo caso il contratto si chiama "Service.SIS_WSDL".
A me è capitato lo stesso problema facendo copia e incolla del nodo serviceModel da un altro progetto perché ho usato un nome diverso nella creazione del servizio remoto del SIS.
Input ha scritto:Ok grazie.
Così dovrei riuscire a passare alcune proprietà leggendole dal app.config forse però mi sono espresso male nel primo post.
Il mio problema è fare in modo che anche con la DLL venga letto l'intero file app.config.
Se creo un'applicazione Windows con le indicazioni recuperate su questo forum e con il file app.config opportunamente modificato riesco ad interrogare il SIS mentre se il progetto è una DLL quando eseguo questo codice "Dim sisCLI = New ServiceReference1.SIS_WSDLClient()" ottengo in seguente messaggio di errore:
Impossibile trovare l'elemento endpoint predefinito che fa riferimento al contratto 'ServiceReference1.SIS_WSDL' nel servizio di configurazione client ServiceModel. È possibile che non sia stato trovato nessun file di configurazione per l'applicazione o che nell'elemento client non sia stato trovato un elemento endpoint corrispondente al contratto.
..è per questo che chiedevo come fare a far leggere correttamente il file app.config ad una DLL.
Oppure sto sbagliando strada?? :-)
grazie
Input
riccardock- Membro della community
- Messaggi : 33
Data d'iscrizione : 08.11.13
Re: DLL per interoperabilita SISTRI e VS
riccardock ha scritto:Ah ok.
Il file di configurazione viene letto in automatico anche dalle DLL, ovviamente in deploy si deve chiamare come la dll ma con estensione aggiunta .config, tipo myLib.dll.config
Sto diventando matto con questo errore..ho visto che il file myLib.dll.config effettivamente viene creato ma come posso fare per capire se lo sta leggendo?
Anzichè far leggere il serviceModel e la sezione client dal file .config non esiste un modo per inserire i valori opportuni nel codice?
Grazie mille
Input
Input- Utente Attivo
- Messaggi : 77
Data d'iscrizione : 20.04.11
Re: DLL per interoperabilita SISTRI e VS
Risolto!!!
Se puo servire a qualcuno posto qui sotto il codice VB.net
In pratica visto i problemi che avevo nel far leggere il file di configurazione alla DLL sono riuscito ad istanziare quanto necessario direttamente nel codice visto che in teoria i parametri del SIS non dovrebbero cambiare tutti i giorni
ecco il codice:
Dim binding As BasicHttpBinding = New BasicHttpBinding(BasicHttpSecurityMode.None)
binding.Name = "SIS_WSDL"
binding.CloseTimeout = TimeSpan.Parse("00:01:00")
binding.OpenTimeout = TimeSpan.Parse("00:01:00")
binding.ReceiveTimeout = TimeSpan.Parse("00:10:00")
binding.SendTimeout = TimeSpan.Parse("00:01:00")
binding.AllowCookies = False
binding.BypassProxyOnLocal = False
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
binding.MaxBufferSize = 2147483647
binding.MaxBufferPoolSize = 2147483647
binding.MaxReceivedMessageSize = 2147483647
binding.MessageEncoding = WSMessageEncoding.Text
binding.TextEncoding = Encoding.UTF8
binding.TransferMode = TransferMode.Buffered
binding.UseDefaultWebProxy = True
binding.ReaderQuotas.MaxDepth = 32
binding.ReaderQuotas.MaxStringContentLength = 2147483647
binding.ReaderQuotas.MaxArrayLength = 2147483647
binding.ReaderQuotas.MaxBytesPerRead = 2147483647
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647
binding.Security.Mode = BasicHttpSecurityMode.Transport
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None
binding.Security.Transport.Realm = ""
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName
Dim EndpointAddress As EndpointAddress = New EndpointAddress(New Uri "https://sisssl.sistri.it/SIS/services/SIS/"))
sisCLI = New sistri.ServiceReference1.SIS_WSDLClient(binding, EndpointAddress)
grazie per l'aiuto
ciao
Input
Se puo servire a qualcuno posto qui sotto il codice VB.net
In pratica visto i problemi che avevo nel far leggere il file di configurazione alla DLL sono riuscito ad istanziare quanto necessario direttamente nel codice visto che in teoria i parametri del SIS non dovrebbero cambiare tutti i giorni
![Laughing](https://2img.net/i/fa/i/smiles/icon_lol.gif)
ecco il codice:
Dim binding As BasicHttpBinding = New BasicHttpBinding(BasicHttpSecurityMode.None)
binding.Name = "SIS_WSDL"
binding.CloseTimeout = TimeSpan.Parse("00:01:00")
binding.OpenTimeout = TimeSpan.Parse("00:01:00")
binding.ReceiveTimeout = TimeSpan.Parse("00:10:00")
binding.SendTimeout = TimeSpan.Parse("00:01:00")
binding.AllowCookies = False
binding.BypassProxyOnLocal = False
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
binding.MaxBufferSize = 2147483647
binding.MaxBufferPoolSize = 2147483647
binding.MaxReceivedMessageSize = 2147483647
binding.MessageEncoding = WSMessageEncoding.Text
binding.TextEncoding = Encoding.UTF8
binding.TransferMode = TransferMode.Buffered
binding.UseDefaultWebProxy = True
binding.ReaderQuotas.MaxDepth = 32
binding.ReaderQuotas.MaxStringContentLength = 2147483647
binding.ReaderQuotas.MaxArrayLength = 2147483647
binding.ReaderQuotas.MaxBytesPerRead = 2147483647
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647
binding.Security.Mode = BasicHttpSecurityMode.Transport
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None
binding.Security.Transport.Realm = ""
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName
Dim EndpointAddress As EndpointAddress = New EndpointAddress(New Uri "https://sisssl.sistri.it/SIS/services/SIS/"))
sisCLI = New sistri.ServiceReference1.SIS_WSDLClient(binding, EndpointAddress)
grazie per l'aiuto
ciao
Input
Input- Utente Attivo
- Messaggi : 77
Data d'iscrizione : 20.04.11
![-](https://2img.net/i/empty.gif)
» compilazione scheda sistri per scarico giacenza avvio utilizzo sistri
» Ma come caricare sul sistri i FORMULARI DEI TRASPORTATORI CONTO PROPRIO SENZA SISTRI?
» SISTRI ELENCO PROBLEMATICHE
» Nuova pagina del sito SISTRI: "Dati utilizzo del Sistema SISTRI"
» Iscrizione SISTRI per soggetti che effettuano trasporto rifiuti pericolosi in conto proprio
» Ma come caricare sul sistri i FORMULARI DEI TRASPORTATORI CONTO PROPRIO SENZA SISTRI?
» SISTRI ELENCO PROBLEMATICHE
» Nuova pagina del sito SISTRI: "Dati utilizzo del Sistema SISTRI"
» Iscrizione SISTRI per soggetti che effettuano trasporto rifiuti pericolosi in conto proprio
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.