47 messaggi dal 27 ottobre 2014
Ciao a tutti,

nelle specifiche tecniche di un Web Service SOGEI, viene richiesto l'invio di un file binario in modalità MTOM, ma nella classe creata automaticamente in .net Service Reference tramite WSDL, non vi è alcun riferimento a tale file, in quanto deve essere esterno al soapenv ... La SOGEI, non avendo esperienza in .net, mi ha mandato un log del messaggio finale, di cui riporto la parte essenziale:

.............. righe relative a <soapenv:Envelope> .........
19:01:00 CEST 2019:DEBUG:>> "</soapenv:Envelope>"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "------=_Part_4_68899.1559926860412"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "Content-Type: text/xml; charset=Cp1252"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "Content-Transfer-Encoding: quoted-printable"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "Content-ID: <Documento.xml>"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "Content-Disposition: attachment; name="Documento.xml""
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "[\r][\n]"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "<"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "?"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "x"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "m"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> "l"
Fri Jun 07 19:01:00 CEST 2019:DEBUG:>> " "
.......... altre righe con il resto dell'array di Byte ...........

La domanda è: come si fa ad includere nel messaggio di Request la parte oltre il tag <soapenv:Envelope>?
Bisogna ricorrere al'implementazione della classe IClientMessageInspector ed aggiungere il Byte array nel BeforeSednRequest o c'è qualche altro sistema ??

Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


La domanda è: come si fa ad includere nel messaggio di Request la parte oltre il tag <soapenv:Envelope>?

Penso che non debba occupartene tu direttamente. Ci pensa il client WCF a comporre una richiesta multipart corretta, che contiene sia il corpo XML del messaggio SOAP che "l'allegato" binario.
Quel che devi fare è configurare il client WCF in modo che usi l'encoding MTOM.

Ecco un esempio in cui si vede che viene configurato l'encoding MTOM dal file .config dell'applicazione, nel punto in cui hai definito il binding.
https://docs.microsoft.com/it-it/dotnet/framework/wcf/samples/mtom-encoding

<wsHttpBinding>  
  <binding name="NomeDelBinding" messageEncoding="Mtom" />  
</wsHttpBinding>  



Ciao,
Moreno
Modificato da BrightSoul il 13 giugno 2019 22:03 -

Enjoy learning and just keep making
47 messaggi dal 27 ottobre 2014
Ciao Moreno,

grazie per la tua consueta disponibilità.

Ho provato a modificare il .config aggiungendo messageEncoding="Mtom" come da te indicato, ma il documento continua a essere incluso nel SOAP Evelope.

Premesso che le specifiche tecniche, per il campo "Documento", riportano testualmente "Il campo non contiene il documento nei formati previsti, ma il riferimento al documento stesso inviato in modalità MTOM";

La property nella classe generata in .net tramite .wsdl è la seguente:

<System.Xml.Serialization.XmlElementAttribute(DataType:="base64Binary", Order:=13)> _
Public Property documento() As Byte()
Get
Return Me.documentoField
End Get
Set
Me.documentoField = value
Me.RaisePropertyChanged("documento")
End Set
End Property

L'assegnazione dell'array che eseguo è:

Request.Documento = File.ReadAllBytes(FilePath)

Cosa sbaglio (credo tutto :(( )? Dove devo assegnare l'array di Bytes?

Grazie ancora.

Enzo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Enzo,
non essendo in possesso del WSDL del servizio non posso essere preciso nelle risposte.

Ho fatto una prova con questo WSDL di esempio che supporta appunto l'invio di contenuti binari con l'encoding MTOM.
https://raw.githubusercontent.com/spring-projects/spring-ws-samples/master/mtom/client/jax-ws/mtom.wsdl

I passi che ho compiuto sono stati:
  • Aprire Visual Studio e creare una nuova applicazione console in VB.NET
  • Fare tasto destro su "Riferimenti" e "Aggiungi riferimento al servizio". Ho incollato l'URL di cui sopra.
  • Scritto questo codice per inviare una chiamata di esempio:
    Dim client = New ServiceReference1.ImageRepositoryClient()
    Dim image As New ServiceReference1.Image()
    image.name = "Foto.jpg"
    image.image = File.ReadAllBytes("D:\foto.jpg")
    client.StoreImage(image)
    
  • Adeguato il file app.config per usare l'encoding MTOM.
        <system.serviceModel>
            <bindings>
                <customBinding>
                    <binding name="ImageRepositorySoap11">
                        <mtomMessageEncoding messageVersion="Soap11" />
                        <httpTransport />
                    </binding>
                </customBinding>
            </bindings>
            <client>
                <endpoint address="http://www.sito.it/mtom-server/" binding="customBinding"
                    bindingConfiguration="ImageRepositorySoap11" contract="ServiceReference1.ImageRepository"
                    name="ImageRepositorySoap11" />
            </client>
        </system.serviceModel>
    


Avviata l'applicazione, ecco cosa invian al server. Ho ispezionato il traffico usando Fiddler. Come puoi notare è una richiesta multipart, come richiesto dai tuoi referenti.
POST http://www.sito.it/mtom-server/ HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";start="<http://tempuri.org/0>";boundary="uuid:87e92ef5-3031-4952-bcc3-9d94714ac82f+id=1";start-info="text/xml"
SOAPAction: ""
Host: www.sito.it
Content-Length: 19902
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive


--uuid:87e92ef5-3031-4952-bcc3-9d94714ac82f+id=1
Content-ID: <http://tempuri.org/0>
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo0QDfTt9bgRPoBZONX6cl5sAAAAALmTdP4j34E+olcKyK+PtW6X3hhYA9WhEqkSrtjO3oQcACQAA</VsDebuggerCausalityData></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><StoreImageRequest xmlns="http://www.springframework.org/spring-ws/samples/mtom"><name>Foto.jpg</name><image><xop:Include href="cid:http://tempuri.org/1/636965759594906049" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></image></StoreImageRequest></s:Body></s:Envelope>
--uuid:87e92ef5-3031-4952-bcc3-9d94714ac82f+id=1
Content-ID: <http://tempuri.org/1/636965759594906049>
Content-Transfer-Encoding: binary
Content-Type: application/octet-stream

     JFIF         C 
  .........


Verifica di aver impostato correttamente il binding e che venga usato nell'elemento <endpoint>. Come vedi il mio endpoint porta l'attributo bindingConfiguration="ImageRepositorySoap11", che è il nome del custom binding che mi sono creato.


ciao,
Moreno

Enjoy learning and just keep making
47 messaggi dal 27 ottobre 2014
Ciao Moreno,

grazie per la celere risposta.

Ho provato a replicare il tuo esempio, e nell' app.config ho ottenuto:

            
  <binding name="ImageRepositorySoap11">
     <mtomMessageEncoding messageVersion="Soap11" />
      <httpTransport />
 </binding>

<endpoint address="http://www.sito.it/mtom-server/" binding="customBinding"
     bindingConfiguration="ImageRepositorySoap11" contract="ServiceReference1.ImageRepository"
     name="ImageRepositorySoap11" />



ma nell'esecuzione della prima istruzione,
                Dim client1 = New ServiceReference1.ImageRepositoryClient()

ottengo il seguente messaggio di errore:
Impossibile trovare l'elemento endpoint predefinito che fa riferimento al contratto 'ServiceReference1.ImageRepository' 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.


Se può servire a darmi una dritta, Il Service Reference creato dal mio wsdl crea i seguenti elementi:

            <basicHttpBinding>
                <binding name="comunicazioneMetadatiBinding" />
            </basicHttpBinding>
....

           <endpoint address="http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati"
                binding="basicHttpBinding" bindingConfiguration="comunicazioneMetadatiBinding"


Quello che non riesco a capire, è come possa fare il compilatore, a capire che solo il contenuto del Tag Documento deve finire al di fuori della busta ....

Spero possa continuare ad aiutarmi. Grazie.

Saluti. Enzo.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Enzo,
facendo semplicemente copia-incolla non può funzionare. Devi comprendere cosa fa ciascun elemento e perciò capire come modificare il tuo web.config. In questo caso proverei semplicemente a cambiare il binding.

<customBinding>
  <binding name="MioBinding">
     <mtomMessageEncoding messageVersion="Soap11" />
      <httpTransport />
 </binding>
</customBinding>




<endpoint address="http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati"
                binding="customBinding" bindingConfiguration="MioBinding"


ciao,
Moreno

PS. Se non funziona posta tutto il contenuto del tuo elemento system.serviceModel.
Modificato da BrightSoul il 20 giugno 2019 14:28 -

Enjoy learning and just keep making
47 messaggi dal 27 ottobre 2014
... ho provato sia con il copia-incolla che con la modifica degli elementi autogenerati ... ecco l'intero codice:


Option Strict On
Option Explicit On

Namespace FSE_ComMetadati
    
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0"),  _
     System.ServiceModel.ServiceContractAttribute([Namespace]:="http://comunicazionemetadati.wsdl.fse.ini.finanze.it", ConfigurationName:="FSE_ComMetadati.comunicazioneMetadatiPT")>  _
    Public Interface comunicazioneMetadatiPT
        
        'CODEGEN: Generating message contract since the operation comunicazioneMetadati is neither RPC nor document wrapped.
        <System.ServiceModel.OperationContractAttribute(Action:="http://comunicazionemetadati.wsdl.fse.ini.finanze.it/ComunicazioneMetadati", ReplyAction:="*"),  _
         System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults:=true)>  _
        Function comunicazioneMetadati(ByVal request As FSE_ComMetadati.comunicazioneMetadatiRequest) As FSE_ComMetadati.comunicazioneMetadatiResponse
        
        <System.ServiceModel.OperationContractAttribute(Action:="http://comunicazionemetadati.wsdl.fse.ini.finanze.it/ComunicazioneMetadati", ReplyAction:="*")>  _
        Function comunicazioneMetadatiAsync(ByVal request As FSE_ComMetadati.comunicazioneMetadatiRequest) As System.Threading.Tasks.Task(Of FSE_ComMetadati.comunicazioneMetadatiResponse)
    End Interface
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://comunicazionemetadatirichiesta.xsd.fse.ini.finanze.it")>  _
    Partial Public Class ComunicazioneMetadatiRichiesta
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private identificativoUtenteField As String
        
        Private pinCodeField As String
        
        Private identificativoOrganizzazioneField As String
        
        Private descrizioneOrganizzazioneField As String
        
        Private strutturaUtenteField As String
        
        Private ruoloUtenteField As String
        
        Private contestoOperativoField As String
        
        Private tipoDocumentoField As String
        
        Private identificativoAssistitoField As String
        
        Private presaInCaricoField As String
        
        Private tipoAttivitaField As String
        
        Private elencoCFAssistitoField() As cfAssistitoType
        
        Private metadatoField() As metadatoType
        
        Private documentoField() As Byte
        
        Private opzioniRequestField() As opzioniType
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property IdentificativoUtente() As String
            Get
                Return Me.identificativoUtenteField
            End Get
            Set
                Me.identificativoUtenteField = value
                Me.RaisePropertyChanged("IdentificativoUtente")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property pinCode() As String
            Get
                Return Me.pinCodeField
            End Get
            Set
                Me.pinCodeField = value
                Me.RaisePropertyChanged("pinCode")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=2)>  _
        Public Property IdentificativoOrganizzazione() As String
            Get
                Return Me.identificativoOrganizzazioneField
            End Get
            Set
                Me.identificativoOrganizzazioneField = value
                Me.RaisePropertyChanged("IdentificativoOrganizzazione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=3)>  _
        Public Property DescrizioneOrganizzazione() As String
            Get
                Return Me.descrizioneOrganizzazioneField
            End Get
            Set
                Me.descrizioneOrganizzazioneField = value
                Me.RaisePropertyChanged("DescrizioneOrganizzazione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=4)>  _
        Public Property StrutturaUtente() As String
            Get
                Return Me.strutturaUtenteField
            End Get
            Set
                Me.strutturaUtenteField = value
                Me.RaisePropertyChanged("StrutturaUtente")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=5)>  _
        Public Property RuoloUtente() As String
            Get
                Return Me.ruoloUtenteField
            End Get
            Set
                Me.ruoloUtenteField = value
                Me.RaisePropertyChanged("RuoloUtente")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=6)>  _
        Public Property ContestoOperativo() As String
            Get
                Return Me.contestoOperativoField
            End Get
            Set
                Me.contestoOperativoField = value
                Me.RaisePropertyChanged("ContestoOperativo")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=7)>  _
        Public Property TipoDocumento() As String
            Get
                Return Me.tipoDocumentoField
            End Get
            Set
                Me.tipoDocumentoField = value
                Me.RaisePropertyChanged("TipoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=8)>  _
        Public Property IdentificativoAssistito() As String
            Get
                Return Me.identificativoAssistitoField
            End Get
            Set
                Me.identificativoAssistitoField = value
                Me.RaisePropertyChanged("IdentificativoAssistito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=9)>  _
        Public Property PresaInCarico() As String
            Get
                Return Me.presaInCaricoField
            End Get
            Set
                Me.presaInCaricoField = value
                Me.RaisePropertyChanged("PresaInCarico")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=10)>  _
        Public Property TipoAttivita() As String
            Get
                Return Me.tipoAttivitaField
            End Get
            Set
                Me.tipoAttivitaField = value
                Me.RaisePropertyChanged("TipoAttivita")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlArrayAttribute(Order:=11),  _
         System.Xml.Serialization.XmlArrayItemAttribute("CFAssistito", [Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it", IsNullable:=false)>  _
        Public Property ElencoCFAssistito() As cfAssistitoType()
            Get
                Return Me.elencoCFAssistitoField
            End Get
            Set
                Me.elencoCFAssistitoField = value
                Me.RaisePropertyChanged("ElencoCFAssistito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("Metadato", Order:=12)>  _
        Public Property Metadato() As metadatoType()
            Get
                Return Me.metadatoField
            End Get
            Set
                Me.metadatoField = value
                Me.RaisePropertyChanged("Metadato")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(DataType:="base64Binary", Order:=13)>  _
        Public Property documento() As Byte()
            Get
                Return Me.documentoField
            End Get
            Set
                Me.documentoField = value
                Me.RaisePropertyChanged("documento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("OpzioniRequest", Order:=14)>  _
        Public Property OpzioniRequest() As opzioniType()
            Get
                Return Me.opzioniRequestField
            End Get
            Set
                Me.opzioniRequestField = value
                Me.RaisePropertyChanged("OpzioniRequest")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it")>  _
    Partial Public Class cfAssistitoType
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private cfField As String
        
        Private attivoField As String
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property cf() As String
            Get
                Return Me.cfField
            End Get
            Set
                Me.cfField = value
                Me.RaisePropertyChanged("cf")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property attivo() As String
            Get
                Return Me.attivoField
            End Get
            Set
                Me.attivoField = value
                Me.RaisePropertyChanged("attivo")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it")>  _
    Partial Public Class erroreType
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private codEsitoField As String
        
        Private esitoField As String
        
        Private tipoErroreField As String
        
        Private fonteField As String
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property codEsito() As String
            Get
                Return Me.codEsitoField
            End Get
            Set
                Me.codEsitoField = value
                Me.RaisePropertyChanged("codEsito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property esito() As String
            Get
                Return Me.esitoField
            End Get
            Set
                Me.esitoField = value
                Me.RaisePropertyChanged("esito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=2)>  _
        Public Property tipoErrore() As String
            Get
                Return Me.tipoErroreField
            End Get
            Set
                Me.tipoErroreField = value
                Me.RaisePropertyChanged("tipoErrore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=3)>  _
        Public Property fonte() As String
            Get
                Return Me.fonteField
            End Get
            Set
                Me.fonteField = value
                Me.RaisePropertyChanged("fonte")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it")>  _
    Partial Public Class opzioniType
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private chiaveField As String
        
        Private valoreField As String
        
        Private tipoField As String
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property chiave() As String
            Get
                Return Me.chiaveField
            End Get
            Set
                Me.chiaveField = value
                Me.RaisePropertyChanged("chiave")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property valore() As String
            Get
                Return Me.valoreField
            End Get
            Set
                Me.valoreField = value
                Me.RaisePropertyChanged("valore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=2)>  _
        Public Property tipo() As String
            Get
                Return Me.tipoField
            End Get
            Set
                Me.tipoField = value
                Me.RaisePropertyChanged("tipo")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it")>  _
    Partial Public Class associazioneType
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private associationTypeField As String
        
        Private sourceObjectField As String
        
        Private targetObjectField As String
        
        Private submissionSetStatusField As String
        
        Private previousVersionField As String
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property associationType() As String
            Get
                Return Me.associationTypeField
            End Get
            Set
                Me.associationTypeField = value
                Me.RaisePropertyChanged("associationType")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property sourceObject() As String
            Get
                Return Me.sourceObjectField
            End Get
            Set
                Me.sourceObjectField = value
                Me.RaisePropertyChanged("sourceObject")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=2)>  _
        Public Property targetObject() As String
            Get
                Return Me.targetObjectField
            End Get
            Set
                Me.targetObjectField = value
                Me.RaisePropertyChanged("targetObject")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=3)>  _
        Public Property submissionSetStatus() As String
            Get
                Return Me.submissionSetStatusField
            End Get
            Set
                Me.submissionSetStatusField = value
                Me.RaisePropertyChanged("submissionSetStatus")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=4)>  _
        Public Property previousVersion() As String
            Get
                Return Me.previousVersionField
            End Get
            Set
                Me.previousVersionField = value
                Me.RaisePropertyChanged("previousVersion")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it")>  _
    Partial Public Class metadatoType
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private tipologiaStrutturaProdDocField As String
        
        Private identificativoOrgDocField As String
        
        Private identificativoAssistitoField As String
        
        Private tipoMimeField As String
        
        Private livelloConfidenzialitaField As String
        
        Private regoleAccessoField As String
        
        Private identificativoRepositoryField As String
        
        Private identificativoDocumentoField As String
        
        Private tipologiaDocumentoAltoField As String
        
        Private tipologiaDocumentoMedioField As String
        
        Private tipologiaDocumentoBassoField As String
        
        Private riferimentoDocumentoField As String
        
        Private associazioneField As associazioneType
        
        Private identificativoUnivocoDocumentoField As String
        
        Private versioneOggettoDocumentoField As String
        
        Private dataValidazioneDocumentoField As String
        
        Private ruoloAutoreField As String
        
        Private istituzioneAutoreField As String
        
        Private codiceFiscaleAutoreField As String
        
        Private specialitaAutoreField As String
        
        Private telecAutoreField As String
        
        Private hashDocField As String
        
        Private sizeDocField As String
        
        Private assettoOrganizzativoField As String
        
        Private identificativoPazienteField As String
        
        Private tipoAttivitaClinicaField As String
        
        Private linguaDocumentoField As String
        
        Private dataInizioPrestazioneField As String
        
        Private dataFinePrestazioneField As String
        
        Private rappresentanteLegaleField As String
        
        Private statoDocumentoField As String
        
        Private riferimentoDocPrescrField() As String
        
        Private conservazioneSostField As String
        
        Private dataSottomissioneField As String
        
        Private identificativoSottomissioneField As String
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property TipologiaStrutturaProdDoc() As String
            Get
                Return Me.tipologiaStrutturaProdDocField
            End Get
            Set
                Me.tipologiaStrutturaProdDocField = value
                Me.RaisePropertyChanged("TipologiaStrutturaProdDoc")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=1)>  _
        Public Property IdentificativoOrgDoc() As String
            Get
                Return Me.identificativoOrgDocField
            End Get
            Set
                Me.identificativoOrgDocField = value
                Me.RaisePropertyChanged("IdentificativoOrgDoc")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=2)>  _
        Public Property IdentificativoAssistito() As String
            Get
                Return Me.identificativoAssistitoField
            End Get
            Set
                Me.identificativoAssistitoField = value
                Me.RaisePropertyChanged("IdentificativoAssistito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=3)>  _
        Public Property TipoMime() As String
            Get
                Return Me.tipoMimeField
            End Get
            Set
                Me.tipoMimeField = value
                Me.RaisePropertyChanged("TipoMime")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=4)>  _
        Public Property LivelloConfidenzialita() As String
            Get
                Return Me.livelloConfidenzialitaField
            End Get
            Set
                Me.livelloConfidenzialitaField = value
                Me.RaisePropertyChanged("LivelloConfidenzialita")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=5)>  _
        Public Property RegoleAccesso() As String
            Get
                Return Me.regoleAccessoField
            End Get
            Set
                Me.regoleAccessoField = value
                Me.RaisePropertyChanged("RegoleAccesso")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=6)>  _
        Public Property IdentificativoRepository() As String
            Get
                Return Me.identificativoRepositoryField
            End Get
            Set
                Me.identificativoRepositoryField = value
                Me.RaisePropertyChanged("IdentificativoRepository")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=7)>  _
        Public Property IdentificativoDocumento() As String
            Get
                Return Me.identificativoDocumentoField
            End Get
            Set
                Me.identificativoDocumentoField = value
                Me.RaisePropertyChanged("IdentificativoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=8)>  _
        Public Property TipologiaDocumentoAlto() As String
            Get
                Return Me.tipologiaDocumentoAltoField
            End Get
            Set
                Me.tipologiaDocumentoAltoField = value
                Me.RaisePropertyChanged("TipologiaDocumentoAlto")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=9)>  _
        Public Property TipologiaDocumentoMedio() As String
            Get
                Return Me.tipologiaDocumentoMedioField
            End Get
            Set
                Me.tipologiaDocumentoMedioField = value
                Me.RaisePropertyChanged("TipologiaDocumentoMedio")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=10)>  _
        Public Property TipologiaDocumentoBasso() As String
            Get
                Return Me.tipologiaDocumentoBassoField
            End Get
            Set
                Me.tipologiaDocumentoBassoField = value
                Me.RaisePropertyChanged("TipologiaDocumentoBasso")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=11)>  _
        Public Property RiferimentoDocumento() As String
            Get
                Return Me.riferimentoDocumentoField
            End Get
            Set
                Me.riferimentoDocumentoField = value
                Me.RaisePropertyChanged("RiferimentoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=12)>  _
        Public Property Associazione() As associazioneType
            Get
                Return Me.associazioneField
            End Get
            Set
                Me.associazioneField = value
                Me.RaisePropertyChanged("Associazione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=13)>  _
        Public Property IdentificativoUnivocoDocumento() As String
            Get
                Return Me.identificativoUnivocoDocumentoField
            End Get
            Set
                Me.identificativoUnivocoDocumentoField = value
                Me.RaisePropertyChanged("IdentificativoUnivocoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=14)>  _
        Public Property VersioneOggettoDocumento() As String
            Get
                Return Me.versioneOggettoDocumentoField
            End Get
            Set
                Me.versioneOggettoDocumentoField = value
                Me.RaisePropertyChanged("VersioneOggettoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=15)>  _
        Public Property DataValidazioneDocumento() As String
            Get
                Return Me.dataValidazioneDocumentoField
            End Get
            Set
                Me.dataValidazioneDocumentoField = value
                Me.RaisePropertyChanged("DataValidazioneDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=16)>  _
        Public Property RuoloAutore() As String
            Get
                Return Me.ruoloAutoreField
            End Get
            Set
                Me.ruoloAutoreField = value
                Me.RaisePropertyChanged("RuoloAutore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=17)>  _
        Public Property IstituzioneAutore() As String
            Get
                Return Me.istituzioneAutoreField
            End Get
            Set
                Me.istituzioneAutoreField = value
                Me.RaisePropertyChanged("IstituzioneAutore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=18)>  _
        Public Property CodiceFiscaleAutore() As String
            Get
                Return Me.codiceFiscaleAutoreField
            End Get
            Set
                Me.codiceFiscaleAutoreField = value
                Me.RaisePropertyChanged("CodiceFiscaleAutore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=19)>  _
        Public Property SpecialitaAutore() As String
            Get
                Return Me.specialitaAutoreField
            End Get
            Set
                Me.specialitaAutoreField = value
                Me.RaisePropertyChanged("SpecialitaAutore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=20)>  _
        Public Property TelecAutore() As String
            Get
                Return Me.telecAutoreField
            End Get
            Set
                Me.telecAutoreField = value
                Me.RaisePropertyChanged("TelecAutore")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=21)>  _
        Public Property HashDoc() As String
            Get
                Return Me.hashDocField
            End Get
            Set
                Me.hashDocField = value
                Me.RaisePropertyChanged("HashDoc")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=22)>  _
        Public Property SizeDoc() As String
            Get
                Return Me.sizeDocField
            End Get
            Set
                Me.sizeDocField = value
                Me.RaisePropertyChanged("SizeDoc")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=23)>  _
        Public Property AssettoOrganizzativo() As String
            Get
                Return Me.assettoOrganizzativoField
            End Get
            Set
                Me.assettoOrganizzativoField = value
                Me.RaisePropertyChanged("AssettoOrganizzativo")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=24)>  _
        Public Property IdentificativoPaziente() As String
            Get
                Return Me.identificativoPazienteField
            End Get
            Set
                Me.identificativoPazienteField = value
                Me.RaisePropertyChanged("IdentificativoPaziente")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=25)>  _
        Public Property TipoAttivitaClinica() As String
            Get
                Return Me.tipoAttivitaClinicaField
            End Get
            Set
                Me.tipoAttivitaClinicaField = value
                Me.RaisePropertyChanged("TipoAttivitaClinica")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=26)>  _
        Public Property LinguaDocumento() As String
            Get
                Return Me.linguaDocumentoField
            End Get
            Set
                Me.linguaDocumentoField = value
                Me.RaisePropertyChanged("LinguaDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=27)>  _
        Public Property DataInizioPrestazione() As String
            Get
                Return Me.dataInizioPrestazioneField
            End Get
            Set
                Me.dataInizioPrestazioneField = value
                Me.RaisePropertyChanged("DataInizioPrestazione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=28)>  _
        Public Property DataFinePrestazione() As String
            Get
                Return Me.dataFinePrestazioneField
            End Get
            Set
                Me.dataFinePrestazioneField = value
                Me.RaisePropertyChanged("DataFinePrestazione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=29)>  _
        Public Property RappresentanteLegale() As String
            Get
                Return Me.rappresentanteLegaleField
            End Get
            Set
                Me.rappresentanteLegaleField = value
                Me.RaisePropertyChanged("RappresentanteLegale")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=30)>  _
        Public Property StatoDocumento() As String
            Get
                Return Me.statoDocumentoField
            End Get
            Set
                Me.statoDocumentoField = value
                Me.RaisePropertyChanged("StatoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("RiferimentoDocPrescr", Order:=31)>  _
        Public Property RiferimentoDocPrescr() As String()
            Get
                Return Me.riferimentoDocPrescrField
            End Get
            Set
                Me.riferimentoDocPrescrField = value
                Me.RaisePropertyChanged("RiferimentoDocPrescr")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=32)>  _
        Public Property ConservazioneSost() As String
            Get
                Return Me.conservazioneSostField
            End Get
            Set
                Me.conservazioneSostField = value
                Me.RaisePropertyChanged("ConservazioneSost")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=33)>  _
        Public Property DataSottomissione() As String
            Get
                Return Me.dataSottomissioneField
            End Get
            Set
                Me.dataSottomissioneField = value
                Me.RaisePropertyChanged("DataSottomissione")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=34)>  _
        Public Property IdentificativoSottomissione() As String
            Get
                Return Me.identificativoSottomissioneField
            End Get
            Set
                Me.identificativoSottomissioneField = value
                Me.RaisePropertyChanged("IdentificativoSottomissione")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3056.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://comunicazionemetadatiricevuta.xsd.fse.ini.finanze.it")>  _
    Partial Public Class ComunicazioneMetadatiRicevuta
        Inherits Object
        Implements System.ComponentModel.INotifyPropertyChanged
        
        Private esitoField As String
        
        Private elencoErroriField() As erroreType
        
        Private identificativoDocumentoField() As String
        
        Private opzioniResponseField() As opzioniType
        
        Private elencoCFAssistitoField() As cfAssistitoType
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute(Order:=0)>  _
        Public Property Esito() As String
            Get
                Return Me.esitoField
            End Get
            Set
                Me.esitoField = value
                Me.RaisePropertyChanged("Esito")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlArrayAttribute(Order:=1),  _
         System.Xml.Serialization.XmlArrayItemAttribute("Errore", [Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it", IsNullable:=false)>  _
        Public Property ElencoErrori() As erroreType()
            Get
                Return Me.elencoErroriField
            End Get
            Set
                Me.elencoErroriField = value
                Me.RaisePropertyChanged("ElencoErrori")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("IdentificativoDocumento", Order:=2)>  _
        Public Property IdentificativoDocumento() As String()
            Get
                Return Me.identificativoDocumentoField
            End Get
            Set
                Me.identificativoDocumentoField = value
                Me.RaisePropertyChanged("IdentificativoDocumento")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("OpzioniResponse", Order:=3)>  _
        Public Property OpzioniResponse() As opzioniType()
            Get
                Return Me.opzioniResponseField
            End Get
            Set
                Me.opzioniResponseField = value
                Me.RaisePropertyChanged("OpzioniResponse")
            End Set
        End Property
        
        '''<remarks/>
        <System.Xml.Serialization.XmlArrayAttribute(Order:=4),  _
         System.Xml.Serialization.XmlArrayItemAttribute("CFAssistito", [Namespace]:="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it", IsNullable:=false)>  _
        Public Property ElencoCFAssistito() As cfAssistitoType()
            Get
                Return Me.elencoCFAssistitoField
            End Get
            Set
                Me.elencoCFAssistitoField = value
                Me.RaisePropertyChanged("ElencoCFAssistito")
            End Set
        End Property
        
        Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        
        Protected Sub RaisePropertyChanged(ByVal propertyName As String)
            Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
            If (Not (propertyChanged) Is Nothing) Then
                propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
            End If
        End Sub
    End Class
    
    <System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0"),  _
     System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced),  _
     System.ServiceModel.MessageContractAttribute(IsWrapped:=false)>  _
    Partial Public Class comunicazioneMetadatiRequest
        
        <System.ServiceModel.MessageBodyMemberAttribute([Namespace]:="http://comunicazionemetadatirichiesta.xsd.fse.ini.finanze.it", Order:=0)>  _
        Public ComunicazioneMetadatiRichiesta As FSE_ComMetadati.ComunicazioneMetadatiRichiesta
        
        Public Sub New()
            MyBase.New
        End Sub
        
        Public Sub New(ByVal ComunicazioneMetadatiRichiesta As FSE_ComMetadati.ComunicazioneMetadatiRichiesta)
            MyBase.New
            Me.ComunicazioneMetadatiRichiesta = ComunicazioneMetadatiRichiesta
        End Sub
    End Class
    
    <System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0"),  _
     System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced),  _
     System.ServiceModel.MessageContractAttribute(IsWrapped:=false)>  _
    Partial Public Class comunicazioneMetadatiResponse
        
        <System.ServiceModel.MessageBodyMemberAttribute([Namespace]:="http://comunicazionemetadatiricevuta.xsd.fse.ini.finanze.it", Order:=0)>  _
        Public ComunicazioneMetadatiRicevuta As FSE_ComMetadati.ComunicazioneMetadatiRicevuta
        
        Public Sub New()
            MyBase.New
        End Sub
        
        Public Sub New(ByVal ComunicazioneMetadatiRicevuta As FSE_ComMetadati.ComunicazioneMetadatiRicevuta)
            MyBase.New
            Me.ComunicazioneMetadatiRicevuta = ComunicazioneMetadatiRicevuta
        End Sub
    End Class
    
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")>  _
    Public Interface comunicazioneMetadatiPTChannel
        Inherits FSE_ComMetadati.comunicazioneMetadatiPT, System.ServiceModel.IClientChannel
    End Interface
    
    <System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")>  _
    Partial Public Class comunicazioneMetadatiPTClient
        Inherits System.ServiceModel.ClientBase(Of FSE_ComMetadati.comunicazioneMetadatiPT)
        Implements FSE_ComMetadati.comunicazioneMetadatiPT
        
        Public Sub New()
            MyBase.New
        End Sub
        
        Public Sub New(ByVal endpointConfigurationName As String)
            MyBase.New(endpointConfigurationName)
        End Sub
        
        Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As String)
            MyBase.New(endpointConfigurationName, remoteAddress)
        End Sub
        
        Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As System.ServiceModel.EndpointAddress)
            MyBase.New(endpointConfigurationName, remoteAddress)
        End Sub
        
        Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress)
            MyBase.New(binding, remoteAddress)
        End Sub
        
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Function FSE_ComMetadati_comunicazioneMetadatiPT_comunicazioneMetadati(ByVal request As FSE_ComMetadati.comunicazioneMetadatiRequest) As FSE_ComMetadati.comunicazioneMetadatiResponse Implements FSE_ComMetadati.comunicazioneMetadatiPT.comunicazioneMetadati
            Return MyBase.Channel.comunicazioneMetadati(request)
        End Function
        
        Public Function comunicazioneMetadati(ByVal ComunicazioneMetadatiRichiesta As FSE_ComMetadati.ComunicazioneMetadatiRichiesta) As FSE_ComMetadati.ComunicazioneMetadatiRicevuta
            Dim inValue As FSE_ComMetadati.comunicazioneMetadatiRequest = New FSE_ComMetadati.comunicazioneMetadatiRequest()
            inValue.ComunicazioneMetadatiRichiesta = ComunicazioneMetadatiRichiesta
            Dim retVal As FSE_ComMetadati.comunicazioneMetadatiResponse = CType(Me,FSE_ComMetadati.comunicazioneMetadatiPT).comunicazioneMetadati(inValue)
            Return retVal.ComunicazioneMetadatiRicevuta
        End Function
        
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Function FSE_ComMetadati_comunicazioneMetadatiPT_comunicazioneMetadatiAsync(ByVal request As FSE_ComMetadati.comunicazioneMetadatiRequest) As System.Threading.Tasks.Task(Of FSE_ComMetadati.comunicazioneMetadatiResponse) Implements FSE_ComMetadati.comunicazioneMetadatiPT.comunicazioneMetadatiAsync
            Return MyBase.Channel.comunicazioneMetadatiAsync(request)
        End Function
        
        Public Function comunicazioneMetadatiAsync(ByVal ComunicazioneMetadatiRichiesta As FSE_ComMetadati.ComunicazioneMetadatiRichiesta) As System.Threading.Tasks.Task(Of FSE_ComMetadati.comunicazioneMetadatiResponse)
            Dim inValue As FSE_ComMetadati.comunicazioneMetadatiRequest = New FSE_ComMetadati.comunicazioneMetadatiRequest()
            inValue.ComunicazioneMetadatiRichiesta = ComunicazioneMetadatiRichiesta
            Return CType(Me,FSE_ComMetadati.comunicazioneMetadatiPT).comunicazioneMetadatiAsync(inValue)
        End Function
    End Class
End Namespace



.. e qui l'app.config così come generato:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.diagnostics>
        <sources>
            <!-- This section defines the logging configuration for My.Application.Log -->
            <source name="DefaultSource" switchName="DefaultSwitch">
                <listeners>
                    <add name="FileLog"/>
                    <!-- Uncomment the below section to write to the Application Event Log -->
                    <!--<add name="EventLog"/>-->
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
            <add name="FileLog"
                 type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                 initializeData="FileLogWriter"/>
            <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
            <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
        </sharedListeners>
    </system.diagnostics>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="comunicazioneMetadatiBinding" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati"
                binding="basicHttpBinding" bindingConfiguration="comunicazioneMetadatiBinding"
                contract="FSE_ComMetadati.comunicazioneMetadatiPT" name="fseComunicazioneMetadati" />
        </client>
    </system.serviceModel>
</configuration>


Grazie. Saluti.
Enzo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok Enzo,
devi semplicemente aggiungere l'attributo messageEncoding="Mtom" al tuo binding.
Ecco l'elemento <system.serviceModel> completo.
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="comunicazioneMetadatiBinding" messageEncoding="Mtom" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati"
          binding="basicHttpBinding" bindingConfiguration="comunicazioneMetadatiBinding"
          contract="FSE_ComMetadati.comunicazioneMetadatiPT" name="fseComunicazioneMetadati" />
    </client>
  </system.serviceModel>


Ho scritto questo codice minimale per inviare una richiesta al servizio. Tu ovviamente dovrai assegnare anche tutte le altre proprietà dell'oggetto ComunicazioneMetadatiRichiesta.
Dim client As New FSE_ComMetadati.comunicazioneMetadatiPTClient()
Dim richiesta As New FSE_ComMetadati.ComunicazioneMetadatiRichiesta()
richiesta.documento = File.ReadAllBytes("D:\foto.jpg")
client.comunicazioneMetadati(richiesta)


La richiesta che ne è scaturita è la seguente. (L'ho intercettata usando Fiddler).
Come vedi, è una richiesta multipart e il contenuto binario si trova al di fuori del Soap:Envelope.

POST http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";start="<http://tempuri.org/0>";boundary="uuid:cecdb6d9-4268-4203-bed7-7bbbc67fdf9c+id=1";start-info="text/xml"
SOAPAction: "http://comunicazionemetadati.wsdl.fse.ini.finanze.it/ComunicazioneMetadati"
Host: www.sito.it
Content-Length: 19696
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive


--uuid:cecdb6d9-4268-4203-bed7-7bbbc67fdf9c+id=1
Content-ID: <http://tempuri.org/0>
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ComunicazioneMetadatiRichiesta xmlns="http://comunicazionemetadatirichiesta.xsd.fse.ini.finanze.it"><documento><xop:Include href="cid:http://tempuri.org/1/636966579642664647" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></documento></ComunicazioneMetadatiRichiesta></s:Body></s:Envelope>
--uuid:cecdb6d9-4268-4203-bed7-7bbbc67fdf9c+id=1
Content-ID: <http://tempuri.org/1/636966579642664647>
Content-Transfer-Encoding: binary
Content-Type: application/octet-stream

     JFIF         C 
  



Quello che non riesco a capire, è come possa fare il compilatore l'encoder a capire che solo il contenuto del Tag Documento deve finire al di fuori della busta ....



Riesce a capire cosa va fuori in base a questo attributo che si trova sulla proprietà documento:
<System.Xml.Serialization.XmlElementAttribute(DataType:="base64Binary", Order:=13)>


ciao,
Moreno

PS. L'indirizzo che leggo lì è corretto? Non dovrebbe essere quello del server su cui è ospitato il webservice?
http://localhost:9080/FseInsServicesWeb/services/fseComunicazioneMetadati

Modificato da BrightSoul il 20 giugno 2019 20:16 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.