1

現在、WCFサービスをIIS6からIIS7に移行しています。このサービスには、内部ストリーミングを目的とした非SSLエンドポイントと、SSLで保護された公開エンドポイントが含まれています。

パブリックで安全なエンドポイントは、wsHttpBindingとsecurity mode="TransportWithMessageCredential"を使用して実装されます。バインディングは次のようになります。

<wsHttpBinding>
  <binding name="CustomSecurityBinding">
    <security mode="TransportWithMessageCredential">
      <message clientCredentialType="UserName" />
    </security>
  </binding>
</wsHttpBinding>

資格情報は、検証のためにカスタムユーザーリポジトリに対して認証されます。

サービスをIIS7(64ビットWin2k8)に展開した後、すべてのサービス(basicHttpBindings)は正しく応答し、wsHttpBindingsを期待します。httpsを使用してトリガーされた場合、常にHTTP 400ステータスコード(不正なリクエスト)を取得します。

IISでトレースを有効にした後、トレースからのメッセージは実際には役に立ちませんでしたが、問題を少し絞り込むことができました。

MODULE_SET_RESPONSE_ERROR_STATUS Warning
ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER",
HttpStatus="400", HttpReason="Bad Request", HttpSubStatus="0", ErrorCode="Der
Vorgang wurde erfolgreich beendet. (0x0)", ConfigExceptionInfo="" 

これまでに行った手順:

  • IIS 7に再インストールされたWCF拡張機能(ServiceModelReg.exe -r -y)
  • ホストに対してhttpsプロトコルを有効にし、ホストに自己署名証明書を追加しました
  • wcf構成でDNS/ID設定を試してみました
  • wcfserviceconfigにベースアドレスを追加しました

2時間グーグルしてこの作業を試みた後、最後の手段としてあなたにお願いします。IIS7のこの奇妙な動作を知っている人はいますか?

4

1 に答える 1

2

SSLバインディングがapplicationHost.config(%windir%\ system32 \ inetsrv \ config \ schema \ IIS_Schema.xml)で構成されていること、およびHTTP.sysストアにバインディングの有効な証明書とストア名が含まれていることを確認しましたか?次に、真のエラーは400エラーによってマスクされる可能性があります。構成でwsHttpBindingを変更して、maxBufferPoolSizeとmaxReceivedMessageSizeを非常に高い値に増やし、これが続くかどうかを確認しましたか?

于 2010-06-03T18:24:28.590 に答える