L'ajout de Service WCF Référence à un point de terminaison https
Mon service WCF application fonctionne sur http et https, cependant, quand j'ai ajouter une référence de service (avec l'url https) dans mon client, Visual Studio 2010 définit le point de terminaison dans le fichier de configuration http. Il ne semble pas être aussi simple que de changer de config d'extrémité https depuis il y a plusieurs fichiers en coulisse faire des choses avec les xsd de référence et le point de terminaison http. Comment puis-je configurer mon service /client pour forcer le https, si bien qu'il définit correctement le point de terminaison?
Quand j'ai essayer de modifier manuellement le point de terminaison dans le fichier de configuration et définissez le mode de sécurité de "Transport", j'obtiens cette erreur:
Message d'Exception: Il n'y a pas de point de terminaison de l'écoute à
https://myservice/AvailabilityService.svc que peut accepter le
message. Cela est souvent causé par une mauvaise adresse ou du SAVON d'action.
Voir InnerException, le cas échéant, pour plus de détails.
Par contre, je peux voir que le point de terminaison dans IE, et je suis le débogage localement. Après je ajouter mon service de référence avec https et recherche la solution pour son http equivolent, il trouve un fichier wsdl référencement http, d'une configuration.svcinfo, et un configuration91.svcinfo qui utilise l'url http au lieu de https
Voici mon côté serveur config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
.. Et côté client config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IAvailabilityService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://myservice/AvailabilityService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAvailabilityService"
contract="PaymentAvailabilityService.IAvailabilityService"
name="BasicHttpBinding_IAvailabilityService" />
</client>
</system.serviceModel>
Peut-être que je suis mieux manuellement la consommation des services dans le code?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de changer votre liaison à l'utilisation de la sécurité des transports pour utiliser HTTPS
La Sécurité Du Transport
Votre côté serveur de liaison doit être configuré pour le protocole https comme de la clientèle: