Ho un problema con invio mtom A SOGEI, continuo a ricevere l'errore:

I messaggi MTOM devono essere di tipo 'application/xop+xml'.

Il problema si presenta dopo che hanno alzato il protocollo a TLS 1.2. Di seguito posto il codice che uso per inviare il file zippato in formato zip Deflated ai loro end point, invio tramite mtom:
String sTestEndpointInvio = "https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort";

InvioTelematicoSS730pMtomClient oInvio = new InvioTelematicoSS730pMtomClient("InvioTelematicoSS730pMtomPort", sTestEndpointInvio);
// Conterrà i dati di richiesta
inviaFileMtomRequest oRequest = new inviaFileMtomRequest();
// Conterrà i dati di risposta
inviaFileMtomResponse oResponse = new inviaFileMtomResponse();

String nomeFile = String.Empty;
nomeFile = String.Format("{0}\\{1}.xml", fldDirectoryOutput.NullableValue, nomefileUtente);
String nomeAllegato = String.Format("{0}\\{1}.zip", fldDirectoryOutput.NullableValue, nomefileUtente);
Zip(nomeFile, nomeAllegato, String.Empty);
FileInfo nomeZippato = new FileInfo(nomeAllegato);

String cfProprietario;
cfProprietario = Settings.ProjectSettings.CFProprietario;
oProprietario.cfProprietario = cfProprietario;
oProprietario.codiceRegione = Settings.ProjectSettings.CodiceRegione;
oProprietario.codiceAsl = Settings.ProjectSettings.CodiceASL;
oProprietario.codiceSSA = Settings.ProjectSettings.CodiceUfficio;

//Compiliamo la richiesta per la VALLE D'Aosta
oRequest.datiProprietario = oProprietario;
oRequest.nomeFileAllegato = nomeZippato.Name;
oRequest.opzionale1 = "";
oRequest.opzionale2 = "";
oRequest.opzionale3 = "";
oRequest.documento = System.IO.File.ReadAllBytes(nomeAllegato);

// Pin code già cifrato presente nei dati di test del
// kit di sviluppo. Se si ha
String pinCode = Settings.ProjectSettings.Pincode;
oRequest.pincodeInvianteCifrato = Classes.Helpers.CifraPinCode(pinCode);
oInvio.Endpoint.Behaviors.Add(new Classes.BasicAuthenticationBehavior(Settings.ProjectSettings.User, Settings.ProjectSettings.Password));
// Permette di annullare/Bypassare l'errore di certificato non conforme
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors)
{
return (true);
};
oRicevuta = oInvio.inviaFileMtom(oRequest.nomeFileAllegato, oRequest.pincodeInvianteCifrato, oRequest.datiProprietario, String.Empty, String.Empty, String.Empty, oRequest.documento);

Nel mio app.config il endpoint è configurato con basicHttpBinding. Uso il framework 4.6.1 e ora non riesco a forzare il content Type e nè a impostare la soap versione a 1.2 che potrebbe risolvere il problema.

Questo è il file di configurazione:

<bindings>
<basicHttpBinding>
<binding name="DettaglioErrori730PortBinding" messageEncoding="Mtom">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
</binding>
<binding name="RicevutaPdf730PortBinding" messageEncoding="Mtom">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
</security>
</binding>
<binding name="InvioTelematicoSS730pMtomPortBinding" messageEncoding="Mtom" maxBufferSize="1048576" maxReceivedMessageSize="1048576" transferMode="Streamed" textEncoding="Soap12">
<security mode="Transport" />
</binding>
</basicHttpBinding>
<!--<customBinding>
<binding name="InvioTelematicoSS730pMtomPortBinding">
<mtomMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
-->
</bindings>
<client>
<endpoint address="http://localhost:9083/EsitoStatoInviiWEB/DettaglioErrori730Service"
binding="basicHttpBinding" bindingConfiguration="DettaglioErrori730PortBinding"
contract="WsDettaglioErrori.DettaglioErrori730" name="DettaglioErrori730Port" />
<endpoint address="http://localhost:9083/RicevutePdf730ServiceWeb/RicevutePdf730Service"
binding="basicHttpBinding" bindingConfiguration="RicevutaPdf730PortBinding"
contract="WsRicevutaPdf730.RicevutaPdf730" name="RicevutaPdf730Port" />
<endpoint address="http://localhost:9080/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort"
binding="basicHttpBinding" bindingConfiguration="InvioTelematicoSS730pMtomPortBinding"
contract="WsInvio730.InvioTelematicoSS730pMtom" name="InvioTelematicoSS730pMtomPort" />
</client>

Come posso risolvere ?
Vittorio Morellini
Modificato da Vitto970 il 21 gennaio 2020 17:54 -

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.