Ultimi argomenti
» Trovare la sede legale
Da Spigola Ven Gen 18, 2019 11:06 am

» MUD senza registro c/s
Da vp88 Mer Gen 16, 2019 5:27 pm

» TRACCIAMENTO MACERIE DA SISMA ABRUZZO
Da vp88 Mar Gen 15, 2019 7:10 pm

» Schedario di carico e scarico RAEE
Da simone1980 Lun Gen 14, 2019 2:29 pm

» Cantiere terre e rocce
Da Mike80 Lun Gen 14, 2019 11:15 am

» spazzamento spazi industriali
Da Aurora Brancia Sab Gen 12, 2019 12:36 pm

» MUD 2019, si sa qualcosa?
Da Admin Gio Gen 10, 2019 7:49 pm

» Spes ultima dea
Da Admin Gio Gen 10, 2019 7:41 pm

» FIR : Detentore diverso dal Produttore
Da Introzzi Gio Gen 10, 2019 7:23 am

» Intermediari e formulari respinti
Da Introzzi Gio Gen 10, 2019 7:11 am


DLL per interoperabilita SISTRI e VS

Andare in basso

DLL per interoperabilita SISTRI e VS

Messaggio  Input il Ven Dic 13, 2013 3:05 pm

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
avatar
Input
Utente Attivo

Messaggi : 72
Data d'iscrizione : 20.04.11

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  riccardock il Ven Dic 13, 2013 4:06 pm

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);
}




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
avatar
riccardock
Membro della community

Messaggi : 33
Data d'iscrizione : 08.11.13

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  Input il Lun Dic 16, 2013 12:36 pm

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
avatar
Input
Utente Attivo

Messaggi : 72
Data d'iscrizione : 20.04.11

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  riccardock il Lun Dic 16, 2013 4:20 pm

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.




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
avatar
riccardock
Membro della community

Messaggi : 33
Data d'iscrizione : 08.11.13

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  Input il Mer Dic 18, 2013 12:31 pm

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
avatar
Input
Utente Attivo

Messaggi : 72
Data d'iscrizione : 20.04.11

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  Input il Gio Dic 19, 2013 12:34 pm

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  Laughing 

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
avatar
Input
Utente Attivo

Messaggi : 72
Data d'iscrizione : 20.04.11

Torna in alto Andare in basso

Re: DLL per interoperabilita SISTRI e VS

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum