Trasmissione Fatture WSDL WCF

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

2 Mi Piace