2

メッセージを WCF 経由でリモート サーバーにログオンできるようにする単純なサービスを作成しようとしましたが、HTTPS を使用するライブ環境にサービスを公開するまではすべて正常に機能していました。

いくつか検索した結果、別のプロトコルを考慮して ServiceConfig を変更する必要があることがわかりました。次の 2 つの記事を組み合わせて使用​​しました。

  1. HTTPバインディングなしでHTTPSを介して動作するようにWCFサービスを構成する方法は?
  2. HTTPS に必要な WCF バインディング

構成に推奨される変更を加えたところ、VS2010 でライブ サービスを WCF 参照として追加できる状態になったようですが、IE を使用してサービスまたは mex アドレスを参照すると、一貫して受信しています。 「HTTP 400 Bad Request」エラー。

サービスの使用に関しては、正常に実行されているように見えますが、mex は IE を介して動作したくありません。

サービス自体は、負荷分散なしで IIS 6.0 を実行している Windows Server 2003 R2 Standard Edition SP2 でホストされています。

私はこの時点で本当に途方に暮れています。これをいじって3〜4日過ごしましたが、進歩がないようです. そのため、どんな助けでも大歓迎です。

問題のサーバー サービス構成の下を参照してください。

  <system.serviceModel> 
    <services>
      <service name="mycorp.Callback.SecPayService" behaviorConfiguration="mycorp.Callback.SecPayServiceBehavior">
         <endpoint address="https://myserver.co.uk/SecPay/SecPayService.svc"
                   binding="wsHttpBinding" bindingConfiguration="TransportBinding" 
                   contract="mycorp.Callback.ISecPayService"/>      
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />        
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mycorp.Callback.SecPayServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
4

1 に答える 1

2

IIS でサービスをホストしている場合は、エンドポイントのアドレスが IIS によって割り当てられるため、エンドポイント要素のアドレス値を空の文字列にするだけです。

于 2012-04-13T16:06:02.283 に答える