0

これはかなり一般的な問題のようですが、私は精査してきましたが、これまでのところ、自分に合った解決策を見つけていません.

IIS で実行されている WCF Web サービス (.svc) は、http 経由で正常に動作します。http と https のバインディングをセットアップしました。http バインディングはホスト ヘッダーを使用せず、完全に機能します。https バインディングは以前はありませんでしたが、追加しましたが、まだ機能しません。

問題は、wsdl 内の soap:address の場所にあります。

http からの wsdl (正しい):

<wsdl:service name="UserService">
<wsdl:port name="BasicHttpBinding_UserServiceSoap" binding="tns:BasicHttpBinding_UserServiceSoap">
<soap:address location="http://xxx.net/test_ryan/webservices/xx/UserService.svc"/>
</wsdl:port>
</wsdl:service>

https からの wsdl (正しくない):

<wsdl:service name="UserService">
<wsdl:port name="BasicHttpBinding_UserServiceSoap" binding="tns:BasicHttpBinding_UserServiceSoap">
<soap:address location="http://colo01/test_ryan/webservices/xx/UserService.svc"/>
</wsdl:port>
</wsdl:service>

ブラウザで xxx.net にアクセスしても警告が表示されないように、ssl 証明書が機能しています。

https で SoapUI からサービスを実行しようとすると、404 エラーが発生します。http バージョンでは、まったく同じリクエストが正常に機能します。

ホスト ヘッダーを iis7 https バインディングに既に追加しました (www.xxx.net と xxx.net だけを試しました)。そして、iisreset を実行します。そして、私が確認すると

cscript.exe /nologo  %systemdrive%\inetpub\adminscripts\adsutil.vbs get /w3svc/1/SecureBindings

「:443:www.xxx.net」と表示されます

サービスは、web.config に「サービス」または「バインディング」要素がなくても、標準の http で動作しています。動作は次のようになります

   <behaviors>      
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />   
          <useRequestHeadersForMetadataAddress />       
        </behavior>
      </serviceBehaviors>
    </behaviors>

バインディング/サービスの多くの順列を試しましたが、うまくいきませんでした。security="none" および security="TransportWithMessageCredential" を使用したバインディングを含めます。また、効果のないエンドポイント アドレスと、svc/wsdl がまったく読み込まれないようにする serviceMetadata.httpsGetUrl を設定しようとしました。

どんな提案でも大歓迎です!ありがとうございました。

4

0 に答える 0