これはかなり一般的な問題のようですが、私は精査してきましたが、これまでのところ、自分に合った解決策を見つけていません.
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 を設定しようとしました。
どんな提案でも大歓迎です!ありがとうございました。