4

現在のセットアップ: - wsHttpBding を使用した WCF サービスがあります。以下のサービス構成を参照してください - ServiceHostFactory を実装して、不適切なスキーマの場所と SOAP アドレスの問題を解決し、それらをマシン名から正しいサーバー ホスト名に変更しました - 私のテスト クライアント(WCFStorm) プロキシを生成し、すべてのメソッドを表示して、それらを正常に呼び出すことができます。- 私の開発環境 (クライアント -> HTTPS -> サービス) は完全に動作します。

問題: - prod 環境 (クライアント -> HTTPS -> F5 -> HTTP -> サービス) - 私のサービスは SSL をオフロードする F5 ロード バランサーの背後にあります - 私のテスト クライアント (WCFStorm) プロキシを生成してすべてのメソッドを表示できますが、メソッドのいずれかを呼び出すと、リモート サーバーが見つかりません 404 エラーが発生します

  • 私のサービス構成: <services> <service behaviorConfiguration="Service1Behavior" name="MyService"> <endpoint name="secure" address="" binding="wsHttpBinding" bindingConfiguration="custBinding" contract="IService"/> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> </service> </services> <bindings> <wsHttpBinding> <binding name="custBinding"> <security mode="Transport"> <transport clientCredentialType="None" /> <message clientCredentialType="None" negotiateServiceCredential="false" establishSecurityContext="false" /> </security> </binding> </wsHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="Service1Behavior"> <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" httpGetUrl="http://myserver/MyService.svc"/> <serviceDebug includeExceptionDetailInFaults="true"/> <dataContractSerializer maxItemsInObjectGraph="6553600" /> </behavior> </serviceBehaviors> </behaviors>

  • wsdl のすべてのスキーマの場所と SOAP アドレスは製品では正しいですが、メソッドを呼び出すことができないことに注意してください。

助けてください。

4

4 に答える 4

3

同様の状況があり、これが機能する方法です。

サービスで - basicHttpBinding を使用するようにバインディングを変更し、すべてのリクエストで渡す必要があるキーを追加しました。

クライアントで - 構成の http を https に変更し、basicHttpBindings 構成でセキュリティ モードをTransportwithに変更しましたclientCredentialType="None"

お役に立てれば。

更新: すぐにこの記事を見つけ、構成を更新したところ、機能しました。そのため、basicHttpBinding の代わりに wsHttpBinding を使用しています。 http://blogs.msdn.com/b/morgan/archive/2010/04/15/setting-up-wcf-with-a-load-balancer-using-ssl-in-the-middle.aspx

于 2012-10-10T16:31:46.337 に答える
2

サービス構成の問題は、セキュリティモードがTransportであるということですが、実際にはそうあるべきですNone。サービスへの呼び出しはすべてF5ロードバランサーの背後でHTTPになるため、Transportそこでセキュリティモードを使用することはできません(クライアント-> HTTPS-> F5-> HTTP->サービス)。ただし、クライアントからサービスを呼び出す場合、クライアント構成はTransportセキュリティモードである必要があり、エンドポイントアドレスにはアドレスが必要HTTPSです。

  <wsHttpBinding>
    <binding name="custBinding">
      <security mode="None">
        <transport clientCredentialType="None" />
        <message clientCredentialType="None" negotiateServiceCredential="false" establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>
于 2013-01-17T21:02:13.593 に答える
0

これは少し遅いかもしれませんが、これが私たちのやり方です。プロキシを生成したら、構成の http: を https に変更するだけです。ここで、ssl を使用して呼び出す必要がある場合と、ssl を使用しない場合がある場合は、構成セクションをコピーし、そのコピーに別の名前を付けます。クライアントを構築するときに、構成名を渡すことができます。正しいものを拾います。

于 2011-02-21T00:42:15.000 に答える
0

レイヤー 7 のロード バランシングではこれを機能させることができませんでした。サービスからさまざまなエラー メッセージが返されました。代わりに、レイヤー 4 負荷分散で問題なく設定されています。

于 2013-01-18T11:50:15.783 に答える