この質問は以前に何度も尋ねられた可能性がありますが、問題を解決できなかったため、この質問を投稿しました。
私の要件は単純です。https でサービスを実行する必要があります。渡された文字列とともに現在の日付と時刻を返す通常の WCF サービスを作成しました。
httpの下のブラウザーでService.svcファイルを表示すると、かなりうまく機能します。
サービスを https に対応させるために web.config にいくつかの変更を加え、ローカル IIS に証明書を作成しました。
以下は私のweb.configファイルです:
<system.serviceModel>
<services>
<service name="Service" behaviorConfiguration="ServiceBehavior">
<!-- Service Endpoints -->
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="customHttp" contract="IService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="customHttp">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
セキュリティ モードをトランスポートとして新しい wsHttpBinding バインディングを作成し、バインディング構成を優先エンドポイントにアタッチしました。
ブラウザーで service.svc ファイルを参照しようとすると、次のように表示されます。
バインディング WSHttpBinding を持つエンドポイントのスキーム https に一致するベース アドレスが見つかりませんでした。登録されているベース アドレス スキームは [http] です。
エンドポイントのアドレス部分に「http://[localhost:54110]/samplewcf/Service.svc」としてサービス URL を指定すると、次のようなエラーが発生し始めました。
バインディング MetadataExchangeHttpsBinding を持つエンドポイントのスキーム https に一致するベース アドレスが見つかりませんでした。登録されているベース アドレス スキームは [http] です。
wsHttpBinding を basicHttpBinding と webHttpBinding に変更しようとしましたが、うまくいきません。上記のエラーが発生します。
IIS でサーバー証明書を使用して証明書を手動で作成したため、https 経由で localhost を参照できますが、私のサービスは https で実行されません。Stack Overflow や多くのブログにも多数の投稿を調べましたが、解決策が見つかりませんでした。
専門家が親切にサポートします。任意のポインタをいただければ幸いです。
よろしく
アヌラグ