0

この質問は以前に何度も尋ねられた可能性がありますが、問題を解決できなかったため、この質問を投稿しました。

私の要件は単純です。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 や多くのブログにも多数の投稿を調べましたが、解決策が見つかりませんでした。

専門家が親切にサポートします。任意のポインタをいただければ幸いです。

よろしく

アヌラグ

4

0 に答える 0