buongiorno,
ho creato un servizio wcs con visual studio 2017 e framework 4.6.1; di default usa basicHttpBinding mentre nel mio caso devo usare wsHttpBinding e deve funzionare con protocollo HTTPS ; ho utilizzato queste impostazioni dentro web.config :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1"/>
</system.web>
<system.serviceModel>
<bindings>
<!--<basicHttpBinding>
<binding name="BasicHttpBinding_IVenService" maxReceivedMessageSize="2147483647" closeTimeout="10:30:00" openTimeout="10:30:00" receiveTimeout="10:30:00" sendTimeout="10:30:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binding>
</basicHttpBinding>-->
<wsHttpBinding>
<binding name="wsHttpEndpointBinding" maxReceivedMessageSize="2147483647" closeTimeout="10:30:00" openTimeout="10:30:00" receiveTimeout="10:30:00" sendTimeout="10:30:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="Transport">
<transport clientCredentialType="None" />
<!--<message clientCredentialType="Certificate" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />-->
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding" name="wsHttpEndpointBinding" contract="WcfService1.IService1" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</client>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="MyServiceBehavior">
<!--<host>
<baseAddresses>
<add baseAddress="https://localhost/vdnService/service1"/>
</baseAddresses>
</host>-->
<endpoint address="https://localhost/vdnService/Service1.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding"
name="wsHttpEndpointBinding" contract="WcfService1.IService1" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<!-- Per evitare la diffusione di informazioni sui metadati,
impostare i valori seguenti su false prima della distribuzione -->
<serviceMetadata httpGetEnabled ="true" httpsGetEnabled="true"/>
<!-- Per ricevere i dettagli sull'eccezione per scopi di debug in caso di guasti,
impostare il valore riportato sotto su true.
Impostarlo su false prima della distribuzione per evitare di diffondere informazioni sull'eccezione -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyEndpointBehavior">
<clientCredentials>
<clientCertificate findValue="miseservices.misericordia.it" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" />
<!--<serviceCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</serviceCertificate>-->
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<protocolMapping>
<add binding="wsHttpBinding" scheme="https" bindingConfiguration="wsHttpEndpointBinding"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Per sfogliare la directory radice dell'applicazione Web durante il debug, impostare il valore riportato sotto su true.
Impostarlo su false prima della distribuzione per evitare di diffondere informazioni sulla cartella dell'applicazione Web.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
quando lancio il servizio dal client di visual studio viene restituito questo errore :
'Quando 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' è impostato su true
nella configurazione,
è necessario specificare un indirizzo relativo per gli endpoint.
Se nell'endpoint viene specificato un URI di ascolto relativo,
sar… possibile utilizzare un indirizzo assoluto.
Per risolvere il problema, specificare un URI relativo per l'endpoint 'https://localhost/vdnService/Service1.svc'. '
in precedenza non era presente l'indirizzo nel tag
<endpoint address="https://localhost/vdnService/Service1.svc"
dentro services
cioè era
<endpoint address=""
e l'errore restituito era :
Impossibile trovare un indirizzo di base corrispondente allo schema https per l'endpoint con binding WSHttpBinding.
Gli schemi degli indirizzi di base registrati sono [http].
quindi sembra un problema dell'indirizzo specificato? come va scritto esattamente?
grazie
Modificato da bryger il 12 giugno 2018 16.01 -
Modificato da bryger il 12 giugno 2018 16.02 -