2010-10-07 5 views
0

J'ai un service Web qui contient une méthode que je dois exécuter pour générer un rapport. La méthode de service Web est écrite en .Net 2.0 et fonctionne très bien sur mon système de test qui fonctionne sur le même serveur que le système live. La seule différence est que la version live utilise https.Pourquoi est-ce que je reçois 400 requêtes incorrectes lorsque j'appelle un service Web .Net 2.0 de WCF via https?

Chaque fois que je change l'adresse de point de terminaison pour le service en direct et que j'exécute mon application, je reçois seulement 400 erreurs (mauvaises requêtes) d'IIS.

Existe-t-il un paramètre de configuration spécifique que je dois modifier dans les paramètres WCF dans le fichier app.config pour qu'il fonctionne avec https?

Les paramètres app.config générés créés par « Ajouter une référence de service » sont les suivantes:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="ReportsSoap" 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://www.mysite.com/subdir/subdir/Reports.asmx" 
      binding="basicHttpBinding" bindingConfiguration="ReportsSoap" 
      contract="SystemReports.ReportsSoap" name="ReportsSoap" /> 
    </client> 
</system.serviceModel> 
+0

Il peut également être pertinent que je sois sur un intranet et les noms d'hôtes externes sont accessibles via un proxy qui nécessite une authentification. J'ai essayé de le changer pour accéder à partir de l'IP mais WCF se plaint que le certificat est invalide (parce qu'il regarde le nom d'hôte) – Tjaart

Répondre

1

Oui, vous devez changer la configuration de liaison à utiliser la sécurité du transport.

<bindings> 
    <basicHttpBinding> 
    <binding name="YourCurrentBindingName" ...> 
     <security mode="Transport" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
+0

Il était déjà là. Je l'ai changé pour ressembler plus à ce que vous avez décrit mais il donne toujours la même erreur. J'ai inclus ma configuration de liaison générée dans la question maintenant. – Tjaart

Questions connexes