0

WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService\CS\WindowsService.sln にある MS サンプル アプリケーションのクライアントとサービスの App.config ファイルを更新して、セキュリティで保護されたバインディングが使用されるようにしましたが、クライアントが呼び出しを行ったときにサービス メソッドで例外がスローされる

「https:// .... /servicemodelsamples/service への HTTP 要求の作成中にエラーが発生しました。これは、HTTPS の場合、サーバー証明書が HTTP.SYS で適切に構成されていないことが原因である可能性があります。これはまた、クライアントとサーバー間のセキュリティ バインディングの不一致が原因です。」

内部例外「基になる接続が閉じられました: 送信時に予期しないエラーが発生しました」

サーバーとクライアントの両方の構成が一致してトランスポート セキュリティ モードを使用し、mex エンドポイントが mexHttpBinding ではなく mexHttpBinding を使用し、サービスの動作が適切に有効になっていることがわかります。

何度も微調整を試みましたが成功しなかったので、何が欠けているか、間違っているか教えてもらえますか?

ありがとう

サーバーとクライアントの設定は

    <?xml version="1.0"?>
<!--Copyright (c) Microsoft Corporation.  All Rights Reserved.-->
<configuration>

  <system.serviceModel>

    <services>
      <service name="Microsoft.Samples.WindowsService.WcfCalculatorService">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:8000/ServiceModelSamples/service"/>
          </baseAddresses>
        </host>
        <!-- This endpoint is exposed at the base address provided by host: https://localhost:8000/ServiceModelSamples/service -->
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="https" contract="Microsoft.Samples.WindowsService.ICalculator"/>
        <!-- The mex endpoint is exposed at https://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>

    <bindings>
      <basicHttpBinding>
        <!-- Configure BasicHttp binding with Transport security mode and clientCredentialType as None -->
        <binding name="https">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>

    <!-- For debugging purposes set the includeExceptionDetailInFaults attribute to true -->
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>
</configuration>

    <?xml version="1.0"?>
<!--Copyright (c) Microsoft Corporation.  All Rights Reserved.-->
<configuration>
  <system.serviceModel>

    <client>
      <endpoint name="" address="https://localhost:8000/servicemodelsamples/service" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="Microsoft.Samples.WindowsService.ICalculator"/>
    </client>

    <bindings>
      <basicHttpBinding>
        <!-- Configure BasicHttp binding with Transport security mode and clientCredentialType as None -->
        <binding name="Binding1">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>

  </system.serviceModel>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
4

1 に答える 1

0

mex は https にできません

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>

への変更

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

于 2012-08-09T09:01:23.307 に答える