Ciao, @MarcoB4, il mio problema riguarda nella generazione proprio dell’interfaccia (ovvero il serviceContract) che ora chiamerò ITrasmissioneFatture.
Ora ho finalmente risolto. Scrivo come sono riuscito magari è utile a qualcun’altro.
In pratica generando il file ITrasmissioneFatture utilizzando il tool wsdl.exe viene generata un’interfaccia che utilizzata come service contract su un progetto WCF NON è compatibile con le chiamate SOAP dell’SDI.
Per generare il il file interfaccia corretto era necessario invece utilizzare, come hai fatto tu, svcutil.exe
svcutil TrasmissioneFatture_v1.1.wsdl TrasmissioneTypes_v1.1.xsd /language:C# /serviceContract /out:ITrasmissioneFatture.cs
All’interno di questo file ho rinominato l’interfaccia in ITrasmissioneFatture.
Una volta fatto questo nel mio progetto WCF ho fatto “Aggiungi->WCF Service” nominandolo TrasmissioneFatture.svc. A questo punto visual studio crea tre file TrasmissioneFatture.svc, TrasmissioneFatture.svc.cs e ITrasmissioneFatture.cs.
Ho poi sovrascritto interamente il file ITrasmissioneFatture.cs del progetto con quello generato precedentemente con svcutil. Quindi all’interno del file TrasmissioneFatture.svc.cs ho dato il comando “Implementa Interfaccia” che genera tutti i metodi necessari per la gestione delle richieste dell’SDI.
Fatto questo bisogna modificare il Web.config. Tutto all’interno del tag <system.serviceModel> ho modificato tutto così
<behaviors>
<serviceBehaviors>
<behavior name="SDIServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="https" />
</protocolMapping>
<bindings>
<basicHttpBinding>
<binding name="SDIBasicHttpBinding" messageEncoding="Text" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="Certificate"></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="SDIServiceBehavior" name="SdiWcfService.TrasmissioneFatture">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="SDIBasicHttpBinding" contract="SdiWcfService.ITrasmissioneFatture" />
</service>
</services>
come messageEncoding ho impostato "Text"perchè pare che le notifiche dell’SDI non siano codificate con Mtom.
Ora il servizio è raggiungibile da https://tuo.dominio.ext/TrasmissioneFatture.svc