Ultimi argomenti attivi
» Tubi fluorescenti ADR SI/NODa homer Lun Mar 25, 2024 7:14 pm
» grado riempimento cisterna... e dove cavolo trovo le densità
Da lotus1 Ven Mar 22, 2024 3:54 pm
» quiz esame ADR 2023
Da massimilianom Ven Mar 22, 2024 11:45 am
» MUD 2024 quando si farà?
Da fabiodafirenze Mer Mar 13, 2024 5:52 pm
» abbandono rifiuti all'interno di manufatti
Da marcos79 Dom Mar 10, 2024 3:51 pm
» Abbandono rifiuti su suolo pubblico
Da marcos79 Dom Mar 10, 2024 3:24 pm
» Relazione annuale consulente ADR
Da tfrab Lun Mar 04, 2024 3:10 pm
» Tassa di concessione governativa: va pagata per ciscuna categoria di iscrizione all'Albo
Da urgada Gio Feb 29, 2024 12:39 pm
» ADR - esenzione nomina consulente per sedi operative
Da tfrab Mer Feb 28, 2024 12:44 pm
» Dubbio Registro per Trasporto Organizzato da
Da GiulioHD650 Lun Feb 26, 2024 1:42 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 : 76
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 : 76
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 : 76
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
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 : 76
Data d'iscrizione : 20.04.11
Argomenti simili
» 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.