IIS 7.5で実行されているWCF Webサービスがいくつかありますが、HTTPリクエストには正しく応答しますが、SSLを使用してメソッドを呼び出すと、404(Not Found)エラーで応答します。
サイトのバインドは次のとおりです。
http://127.0.0.1:8088/Public/PublicDataService.svc を呼び出すと、予期した応答が得られます。
サービスを作成しました。
このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。これは、コマンドラインからsvcutil.exeツールを使用して、次の構文で実行できます。
同様に、任意のサービスメソッドの呼び出しが機能し、CanConnectと呼ばれる最も基本的なメソッドがあり、単純に「true」を返します。
http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect
本当
Httpsを使用すると、次のようになります。
https://127.0.0.1/Public/PublicDataService.svc
サービスを作成しました。
このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。これを行うには、コマンドラインからsvcutil.exeツールを使用し、次の構文を使用します。
https://127.0.0.1/Public/PublicDataService.svc/CanConnect
「/パブリック」アプリケーションでのサーバーエラー。
リソースが見つかりません。
説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に利用できなくなっている可能性があります。次のURLを確認して、スペルが正しいことを確認してください。
リクエストされたURL:/Public/PublicDataService.svc/CanConnect
バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.6.1055.0
これは私を完全に困惑させました、どのようにして.svcを呼び出すことができますが、その内部メソッドは404を与えますか?問題をさらに混乱させるには、これが機能していました...実際、いつ停止したかさえわかりません。つまり、それがコードリリースやサーバーパッチなどに対応しているかどうかです。
したがって、ウェブサイトの実際の構成は次のとおりです。
Webservices (this is the root of the application / where the Web.Config sits)
- Public (a windows directory, no addition config)
ルートの直下で実行される他のサービスがいくつかあり、httpとhttpsの両方で正常に機能しています。
これを引き起こしている可能性のあるものに関するアイデア。
これは単にweb.configファイルのエラーであることがわかりました。
SOに関するこれらの2つの答えが解決策でした:
https://stackoverflow.com/a/26581326/1286358
そしてその逆
https://stackoverflow.com/a/26539003/1286358
不思議なことに、それがhttpとhttpsの両方で1度だけ機能し、その後停止しただけだったのです。他の場所で構成変更があったに違いありません。
編集:完全性のための実際の修正
以下はweb.configにあり、「none」から「Transport」に変更されました
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding>
<security mode="Transport" />