Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 28
  1. #11
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Mi sono limitato a 2 considerazioni:

    1) Stai cercando di parsare quella roba la come se fosse un documento XML
    2) Quella roba la non è un XML (può essere benissimo "una parte" di un XML), poichè la specifica XML prevede il prologo.

    Poi, cosa fornisca quel web-service non lo so.
    Cosa tu ci debba fare non lo so.
    Sta di fatto che tutti i tentativi di parsing ti stanno dicendo che c'è un errore alla riga 1, carattere 2 ed il motivo te l'ho scritto.


    Ciao.
    Sbaglia qualcosa lui (l'OP) perché ho provato e funziona correttamente (VS 2010).
    codice:
    ------------------------------------------------------------------------------
    ' <auto-generated>
    '     Il codice è stato generato da uno strumento.
    '     Versione runtime:4.0.30319.42000
    '
    '     Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
    '     il codice viene rigenerato.
    ' </auto-generated>
    '------------------------------------------------------------------------------
    
    
    Option Strict Off
    Option Explicit On
    
    Imports System.Xml.Serialization
    
    '
    'Codice sorgente generato automaticamente da xsd, versione=4.0.30319.1.
    '
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://www.dtt.it/xsd/INFOWS"),  _
     System.Xml.Serialization.XmlRootAttribute([Namespace]:="http://www.dtt.it/xsd/INFOWS", IsNullable:=false)>  _
    Partial Public Class dettaglioAutoveicoloComproprietariTrasferimentiResResponse
        
        Private erroreField() As dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("errore")>  _
        Public Property errore() As dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore()
            Get
                Return Me.erroreField
            End Get
            Set
                Me.erroreField = value
            End Set
        End Property
    End Class
    
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://www.dtt.it/xsd/INFOWS")>  _
    Partial Public Class dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore
        
        Private codiceErroreField As String
        
        Private descrizioneErroreField As String
        
        '''<remarks/>
        Public Property codiceErrore() As String
            Get
                Return Me.codiceErroreField
            End Get
            Set
                Me.codiceErroreField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property descrizioneErrore() As String
            Get
                Return Me.descrizioneErroreField
            End Get
            Set
                Me.descrizioneErroreField = value
            End Set
        End Property
    End Class


    codice di prova
    codice:
    Imports System.IO
    Imports System.Xml.Serialization
    
    
    Public Class Form1
    
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
    
            'Dim a As New dettaglioAutoveicoloComproprietariTrasferimentiResResponse non serve nessun new
            Dim a As dettaglioAutoveicoloComproprietariTrasferimentiResResponse
    
    
            Dim doc As New System.Xml.XmlDocument()
            doc.Load("c:\temp\Error.xml")
            Dim nsmgr As New System.Xml.XmlNamespaceManager(doc.NameTable)
            nsmgr.AddNamespace("soap-env", "http://schemas.xmlsoap.org/soap/envelope/")
            Dim ex As System.Xml.XmlElement = doc.DocumentElement.SelectSingleNode("soap-env:Body", nsmgr)
            'Serialiazzatore
            Dim ser As New XmlSerializer(GetType(dettaglioAutoveicoloComproprietariTrasferimentiResResponse))
            a = CType(ser.Deserialize(New StringReader(ex.InnerXml)), dettaglioAutoveicoloComproprietariTrasferimentiResResponse)
    
    
            MessageBox.Show(a.errore(0).codiceErrore & " - " & a.errore(0).descrizioneErrore)
    
    
    
    
    
    
        End Sub
    End Class
    Ultima modifica di sspintux; 04-01-2016 a 16:45

  2. #12
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    Sbaglia qualcosa lui (l'OP) perché ho provato e funziona correttamente (VS 2010).
    codice:
    ------------------------------------------------------------------------------
    ' <auto-generated>
    '     Il codice è stato generato da uno strumento.
    '     Versione runtime:4.0.30319.42000
    '
    '     Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
    '     il codice viene rigenerato.
    ' </auto-generated>
    '------------------------------------------------------------------------------
    
    
    Option Strict Off
    Option Explicit On
    
    Imports System.Xml.Serialization
    
    '
    'Codice sorgente generato automaticamente da xsd, versione=4.0.30319.1.
    '
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://www.dtt.it/xsd/INFOWS"),  _
     System.Xml.Serialization.XmlRootAttribute([Namespace]:="http://www.dtt.it/xsd/INFOWS", IsNullable:=false)>  _
    Partial Public Class dettaglioAutoveicoloComproprietariTrasferimentiResResponse
        
        Private erroreField() As dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("errore")>  _
        Public Property errore() As dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore()
            Get
                Return Me.erroreField
            End Get
            Set
                Me.erroreField = value
            End Set
        End Property
    End Class
    
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://www.dtt.it/xsd/INFOWS")>  _
    Partial Public Class dettaglioAutoveicoloComproprietariTrasferimentiResResponseErrore
        
        Private codiceErroreField As String
        
        Private descrizioneErroreField As String
        
        '''<remarks/>
        Public Property codiceErrore() As String
            Get
                Return Me.codiceErroreField
            End Get
            Set
                Me.codiceErroreField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property descrizioneErrore() As String
            Get
                Return Me.descrizioneErroreField
            End Get
            Set
                Me.descrizioneErroreField = value
            End Set
        End Property
    End Class


    codice di prova
    codice:
    Imports System.IO
    Imports System.Xml.Serialization
    
    
    Public Class Form1
    
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
    
            'Dim a As New dettaglioAutoveicoloComproprietariTrasferimentiResResponse non serve nessun new
            Dim a As dettaglioAutoveicoloComproprietariTrasferimentiResResponse
    
    
            Dim doc As New System.Xml.XmlDocument()
            doc.Load("c:\temp\Error.xml")
            Dim nsmgr As New System.Xml.XmlNamespaceManager(doc.NameTable)
            nsmgr.AddNamespace("soap-env", "http://schemas.xmlsoap.org/soap/envelope/")
            Dim ex As System.Xml.XmlElement = doc.DocumentElement.SelectSingleNode("soap-env:Body", nsmgr)
            'Serialiazzatore
            Dim ser As New XmlSerializer(GetType(dettaglioAutoveicoloComproprietariTrasferimentiResResponse))
            a = CType(ser.Deserialize(New StringReader(ex.InnerXml)), dettaglioAutoveicoloComproprietariTrasferimentiResResponse)
    
    
            MessageBox.Show(a.errore(0).codiceErrore & " - " & a.errore(0).descrizioneErrore)
    
    
    
    
    
    
        End Sub
    End Class
    Cosa intendi per LUI (l'OP)?
    Ma sei partito dall'XML che ti ho postato io sopra?
    In tal caso, come fa afunzionarti che ame non va?
    Grazie

  3. #13
    Sì , con OP intendo te.
    Ti confermo che mi funziona tutto correttamente con l' ultimo XML che hai postato

  4. #14
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Ok....provo a ricontrollare il codice punto per punto.

    Intanto ti ringrazio infinitamente per la disponibilità e per i test

  5. #15
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Buongiorno di nuovo a tutti

    ...Alla fine sono riuscito a deserializzare; non ho capito da cosa fosse dovuto, probabilmente ad un errore (uno spazio, un "a capo" o qualcosa del genere nel file XML).
    Il programma, quindi funziona correttamente.

    Ora, però, ho la necessita di dovermi per forza connettermi al WSDL del servizio Web esposto; il problema è come passare le credenziali UserToken presenti nell'header della request SOAP al servizio.
    Utilizzando il Framework 4.0 e VS2010, ho importato il riferimento al Servizio ma non c'è verso di riuscire a connettersi (passando la login di accesso) e ottenere una risposta.
    Il servizio esposto, viene interamente descritto qui: http://www.mit.gov.it/mit/mop_all.php?p_id=25548

    In alternativa...
    Per il momento, sono riuscito ad inoltrare correttamente una richiesta al servizio costruendomi manualmente il "payload" (contenente un Header con Username e Password) da inoltrare mediante una "HttpWebRequest", ma poi, ottengo in risposta una "HttpWebResponse".
    Sapendo qual'è l'oggetto ritornatomi in risposta dal WebService...è possibile, secondo voi, convertire una "HttpWebResponse" (ottenuta mediante il metodo "GetResponse" della "HttpWebRequest") nella classe del Web Service che mi aspetto in risposta e che ho a disposizione avendo importato il riferimento al WSDL del servizio?

    Io ho provato a fare il cast/Ctype di "rq.GetResponse" nell'oggetto che mi aspetto e definito nel "Reference.vb" del servizio web importato...ma, ovviamente, non funziona...
    Grazie

  6. #16
    Quote Originariamente inviata da mmjc23 Visualizza il messaggio
    Buongiorno di nuovo a tutti

    ...Alla fine sono riuscito a deserializzare; non ho capito da cosa fosse dovuto, probabilmente ad un errore (uno spazio, un "a capo" o qualcosa del genere nel file XML).
    Il programma, quindi funziona correttamente.

    Ora, però, ho la necessita di dovermi per forza connettermi al WSDL del servizio Web esposto; il problema è come passare le credenziali UserToken presenti nell'header della request SOAP al servizio.
    Utilizzando il Framework 4.0 e VS2010, ho importato il riferimento al Servizio ma non c'è verso di riuscire a connettersi (passando la login di accesso) e ottenere una risposta.
    Il servizio esposto, viene interamente descritto qui: http://www.mit.gov.it/mit/mop_all.php?p_id=25548

    In alternativa...
    Per il momento, sono riuscito ad inoltrare correttamente una richiesta al servizio costruendomi manualmente il "payload" (contenente un Header con Username e Password) da inoltrare mediante una "HttpWebRequest", ma poi, ottengo in risposta una "HttpWebResponse".
    Sapendo qual'è l'oggetto ritornatomi in risposta dal WebService...è possibile, secondo voi, convertire una "HttpWebResponse" (ottenuta mediante il metodo "GetResponse" della "HttpWebRequest") nella classe del Web Service che mi aspetto in risposta e che ho a disposizione avendo importato il riferimento al WSDL del servizio?

    Io ho provato a fare il cast/Ctype di "rq.GetResponse" nell'oggetto che mi aspetto e definito nel "Reference.vb" del servizio web importato...ma, ovviamente, non funziona...
    Grazie
    Ciao, ipotizzo che usi WCF.

    non ho tempo per studiarmi il servizio, ma ti segnalo diverse starde per ottenere il tuo risultato.

    1) tieni presente che esistono diversi tipi di binding e può essere che qualcuno faccia già al caso tuo

    2) intercetti il messaggio in uscita e gli aggiungi l'header di sicurezza; parti da qua :
    https://msdn.microsoft.com/en-us/lib...v=vs.100).aspx

    3) il metodo più flessibile (ma anche più complicato) è implementare un Message Inspector;
    non avrai difficoltà a trovare esempi in rete.

    4) Personalmente non la userei, ma può funzionare anche l'alternativa che hai messo su
    costruendoti la request a manina; ... rifletti sul fatto che concettualmente non c'è differenza tra la deserializzazione già fatta dell'errore e quella che devi fare ora.

    HTH

  7. #17
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Ciao sspintuxe grazie nuovamente per il tempo dedicatomi

    Data la mia scarsa conoscenza dei web services in generale richiamati da un'applicazione Desktop standard Vb.Net, gli argomenti trattati nella tua risposta mi risultano un pochino ostici...devo trovarmi un po' di tempo per approfondire.
    Il problema di deserializzare (come fatto per l'errore) è che, il Web Service, non mi restituisce tutti i campi della classe ma solo quelli effettivamente riempiti; non posso quindi utilizzare il tool "xsd" sull'XML ritornato dal WS perchè mi genererebbe delle classi prive dei campi nulli per quella specifica richiesta. Dovrei quindi mettermi a definire manualmente tutte le decine di strutture che costituiscono le possibili risposte del Web Service
    Per questo motivo, qualora non si possa richiamare direttamente i metodi del servizio web importato per riferimento (a causa dell'autenticazione UserToken), chiedevo se era possibile trasformare l'oggetto ottentuo mediante la "GetResponse" nella classe (che conosco a priori) definita mediante l'importazione del riferimento al servizio.

    Non mi resta che cercare online le modalità da Te suggerite.
    Grazie di nuovo e Buona giornata

  8. #18
    Quote Originariamente inviata da mmjc23 Visualizza il messaggio
    ....
    Non mi resta che cercare online le modalità da Te suggerite.
    .....
    ho visto l'header di sicurezza richiesto.
    Fossi in te mi concentrerei su quanto ti indicato al punto 2) del messaggio precedente
    e lascerei perdere la request costruita a manina

  9. #19
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Ciao sspintux
    Ti dirò...io ho provato a dare un'occhiata al link che mi hai postato, ma non c'ho capito una mazza...
    O meglio...non sono riuscito a capire come valorizzare gli oggetti "OperationContextScope" e "MessageHeader"; ho trovato anche altri esempi online che utilizzavano l'oggetto "SoapClient" ma, pur avendo cercato in lungo e in largo, non c'è stato verso di capire come dichiarare (in VS2010 e Framework 4.0) un oggetto "SoapClient" e passargli gli oggetti "Binding" e "EndPoint"

    Alla fine, la botta di ( | )...da un post di un Forum che avevo già letto ma che non riuscivo ad utilizzare...

    Posto qui la soluzione, qualora potesse essere utilie in futuro a qualcun altro...mi rimane ancora da capire come modificare l'app.config runtime (visto che l'indirizzo di EndPoint ed username e password del servizio li carico all'avvio dell'applicazione)

    Quindi:
    -Ho aggiunto il riferimento al servizio web mediante il suo WSDL (questa operazione, mi va a creare un file app.config all'interno del progetto)
    -All'interno dell'app.config, viene creata una sezione "client" relativa ai servizi importati come mostrato di seguito
    codice:
    <client>
                <endpoint address="https://e-servizicoll.dtt.ilportaledellautomobilista.it:443/Info-ws-sh/services/dettaglioAutoveicoloComproprietariTrasferimentiRes/"
                    binding="basicHttpBinding" bindingConfiguration="dettaglioAutoveicoloComproprietariTrasferimentiResSoap11"
                    contract="Autoveicolo.dettaglioAutoveicoloComproprietariTrasferimentiRes"
                    name="dettaglioAutoveicoloComproprietariTrasferimentiResSoap11">
                    </endpoint>
    </client>
    -Dopo il Tag "name", è bastato aggiungere l'header richiesto dal Web Service in questo modo:
    codice:
    <client>
                <endpoint address="https://e-servizicoll.dtt.ilportaledellautomobilista.it:443/Info-ws-sh/services/dettaglioAutoveicoloComproprietariTrasferimentiRes/"
                    binding="basicHttpBinding" bindingConfiguration="dettaglioAutoveicoloComproprietariTrasferimentiResSoap11"
                    contract="Autoveicolo.dettaglioAutoveicoloComproprietariTrasferimentiRes"
                    name="dettaglioAutoveicoloComproprietariTrasferimentiResSoap11">
                    <headers>
                        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                            <wsse:UsernameToken>
                                <wsse:Username>MY_USERNAME</wsse:Username>
                                <wsse:Password>MY_PASSWORD</wsse:Password>
                            </wsse:UsernameToken>
                        </wsse:Security>
                    </headers>
                </endpoint>
    </client>
    -A questo punto, si passa allo sviluppo VB: innanzi tutto, visto che il servizio web richiede un certificato, l'ho "imbrogliato" in questo modo:
    codice:
     'Evento di avvio del form
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            'Imposto (all'avvio per sempre) l'autenticazione Ssl3 e la risposta forzata a "True" alla richiesta di certificato necessari per il servizio di motorizzazione
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
            ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications)
        End Sub
    
        'Callback richiesta certificato
        Private Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
            'Restituisce True qualsiasi certificato venga richiesto
            Return True
        End Function
    -Ora, nella routine dove si deve consumare il servizio Web, è necessario dichiarare una variabile del tipo importato mediante l'importazione servizio Web, SPECIFICANDO NEL "NEW" IL PARAMETRO "name" CHE ABBIAMO VISTO PRIMA NEL FILE app.config
    codice:
     Dim myClient As New Autoveicolo.dettaglioAutoveicoloComproprietariTrasferimentiResClient("dettaglioAutoveicoloComproprietariTrasferimentiResSoap11")
            Dim rq As New Autoveicolo.DettaglioAutoveicoloBaseType
            Dim tg As New Autoveicolo.TargaType
            tg.numeroTarga = "AA123ZZ"
            rq.dettaglioAutoveicoloBaseInput = New Autoveicolo.DettaglioAutoveicoloBaseInputType
            rq.dettaglioAutoveicoloBaseInput.Item = tg
            Dim lg As New Autoveicolo.LoginType
            lg.codicePin = ""
            rq.login = lg
            rq.pdf = False
            Dim rs As Autoveicolo.DettaglioAutoveicoloComproprietariTrasferimentiResResponseType
            rs = myClient.dettaglioAutoveicoloComproprietariTrasferimentiRes(rq)
    ...e finalmente, mi ritrovo l'oggetto "rs" valorizzato con tutti i parametri ritornati dal Web Service.
    Questo è quanto...non posso purtroppo dare eventuale supporto perchè non c'ho capito molto nemmeno io e probabilmente ci sarà dei modi più eleganti per farlo, ma è sempre meglio che analizzare riga per riga, tag per tag, la risposta "GetResponseStream".

    Non mi rimane che capire come modificare l'app.config runtime in base a EndPoint e Username/Password letti da file config XML.

    Ti ringrazio infinitamente per il supporto e per il tempo dedicatomi
    Buona serata

  10. #20
    Quote Originariamente inviata da mmjc23 Visualizza il messaggio
    Ciao sspintux
    Ti dirò...io ho provato a dare un'occhiata al link che mi hai postato, ma non c'ho capito una mazza...
    ....
    Alla fine, la botta di ( | )...da un post di un Forum che avevo già letto ma che non riuscivo ad utilizzare...
    .......

    Non mi rimane che capire come modificare l'app.config runtime in base a EndPoint e Username/Password letti da file config XML.
    Ciao,
    a me sembra che tu stia girando intorno al problema riuscendo ogni volta a creartene uno nuovo;
    tra parentesi incomincio ad avere il sospetto che anche la deserializzazione a manina dell'errore sia inutile.

    Non ho provato , ma questo è un custom binging che dovrebbe andare bene nel tuo caso
    visto che usi https:
    codice:
    <bindings>
      <customBinding>
     <binding name="CustomSoapBinding">
       <security includeTimestamp="false"
        authenticationMode="UserNameOverTransport"
        defaultAlgorithmSuite="Basic256"
        requireDerivedKeys="false"
        messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
       </security>
       <textMessageEncoding messageVersion="Soap11"></textMessageEncoding>
       <httpsTransport />
     </binding>
      </customBinding>
    </bindings>
    username e password li imposti con un codice tipo questo :
    codice:
    var proxy = new ServiceRef.ServizioClient();
    proxy.ClientCredentials.UserName.UserName = "user";
    proxy.ClientCredentials.UserName.Password = "Password";
    Non funzionerebbe con il protocollo http perché per impostazione predefinita WCF
    non permette l'invio di username e password in chiaro senza una qualche forma di protezione,
    motivo per cui ti avevo suggerito il punto 2) che funziona anche in questo caso e che , sempre senza aver provato e senza controllo errori, suona più o meno così:

    codice:
    using (var proxy = new ServiceRef.ServizioClient())
    {
     using (new OperationContextScope(proxy.InnerChannel))
     {
      string headerText =
         "<wsse:UsernameToken  xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"> " +
         "<wsse:Username>{0}</wsse:Username> " +
         "<wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">{1}</wsse:Password> " +
         "</wsse:UsernameToken> ";
    
    
      headerText = string.Format(headerText, "user", "pwd");
    
    
      XmlDocument MyDoc = new XmlDocument();
      MyDoc.LoadXml(headerText);
      XmlElement myElement = MyDoc.DocumentElement;
    
    
      System.ServiceModel.Channels.MessageHeader myHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", myElement, true);
      OperationContext.Current.OutgoingMessageHeaders.Add(myHeader);
    
    ....
    
    }
    Se non dovesse funzionare o se occorre un maggior controllo su come formare l'header di sicurezza
    si può fare una cosa del genere :
    codice:
    using (var proxy = new ServiceRef.ServizioClient())
    {
     using (new OperationContextScope(proxy.InnerChannel))
     {
      var sh = new ClientSecurityHeader(utente, password);
      OperationContext.Current.OutgoingMessageHeaders.Add(sh);
      ....
     }
    }
    dove ClientSecurityHeader è una classe che eredita da MessageHeader
    ed in cui puoi eseguire l'override dei suoi vari metodi :
    OnWriteHeaderContent, OnWriteStrartHeader .... e compagnia bella.

    .... infine, sicuro che non ti basti questo per risolvere alla radice
    il problema della derializzazione dell'errore ?
    codice:
    // in pseudocodice
    se il tipo della risposta ricevuto è errotype 
       'casta' la risosta in errortype
    altrimenti 
       'castala' in ripostatype

    HTH
    Ultima modifica di sspintux; 15-01-2016 a 10:04

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.