4

Fiddler を介して WCF クライアント要求をルーティングしようとすると、問題が発生します。Web の高低を検索したところ、WCF サービスが IPv4 でリッスンするように構成されているが、IPv6 が有効になっている場合に問題が発生する Fiddler への参照が 2 つしか見つかりませんでした。ただし、私の問題は似ていますが、私の問題ではないようです。

IPv4 ポートでホストされているサービスへの接続で問題が発生しています。バインディングがフィドラー プロキシを使用するように構成されている場合、WCF クライアントによって次の例外がスローされます。Fiddler のオプションで IPv6 サポートを無効にし、バインディングがプロキシを使用するように適切に構成されていることを確認しました。

例外報告書:

System.ServiceModel.EndpointNotFoundException: http://campus.services.ecollege-labs.com/Entity/Foundation/v1.0/EducationalPartnerSvcに接続できませんでした . TCP エラー コード 10061: ターゲット マシンがアクティブに拒否したため、接続できませんでした 10.181.3.23:8888。---> System.Net.WebException: リモート サーバーに接続できません ---> System.Net.Sockets.SocketException: ターゲット マシンが積極的に拒否したため、接続できませんでした 10.181.3.23:8888 at System.Net System.Net.ServicePoint.ConnectSocketInternal の .Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) (Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) - -- 内部例外スタック トレースの終了 --- System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) の System.Net.HttpWebRequest で。

サーバー スタック トレース: System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream() で System.ServiceModel.Channels.HttpOutput.Send(TimeSpan タイムアウト) で System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.SendRequest(メッセージ メッセージ、 System.ServiceModel.Channels.RequestChannel.Request(メッセージ メッセージ、TimeSpan タイムアウト) で System.ServiceModel.Dispatcher.RequestChannelBinder.Request(メッセージ メッセージ、TimeSpan タイムアウト) で System.ServiceModel.Channels.ServiceChannel.Call(String アクション) で TimeSpan タイムアウト) System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ)

[0] で例外が再スローされました。 Facades.Campus.EducationalPartner.EducationalPartnerSvc.FindByClientString(String clientString) at IMS.EnterpriseServices.Facades.Campus.EducationalPartner.EducationalPartnerSvcClient.FindByClientString(String clientString) in C:\P4\HEDI\AS2-dev-dotnext-campus-dev\AS \HEI\Src\CAS\IMS.EnterpriseServices.Facades.Campus\Service References\EducationalPartner\Reference.cs: C:\P4\HEDI\ の IMS.EnterpriseServices.Facades.Campus.CampusEntityFacade.GetEPID(String clientString) の 428 行目AS2-dev-dotnext-campus-dev\AS\HEI\Src\CAS\IMS.EnterpriseServices.Facades.Campus\CampusEntityFacade.cs: C:\P4\HEDI\AS2-dev-dotnext-campus-dev\AS\HEI\Src\CAS\ の IMS.EnterpriseServices.Transformation.Domain.TransformationSvc.TransformCreateGroupRequest(createGroupRequestMessage メッセージ) の 37 行目IMS.EnterpriseServices.Transformation.Domain\TransformationSvc.cs: C:\P4\HEDI\AS2-dev-dotnext-campus-dev\AS\HEI\ の IMS.EnterpriseServices.Facades.IMSFacade.TransformCreateGroupRequest(createGroupRequestMessage imsMessage) の行 106 Src\CAS\IMS.EnterpriseServices.Facades\IMSFacade.cs: C:\P4\HEDI\AS2-dev-dotnext-campus-dev\AS\ の IMS.EnterpriseServices.Domain.TransformationAndEnrichmentCoordinator.ProcessCreateGroupRequestMessage (createGroupRequestMessage メッセージ) の行 113 HEI\Src\CAS\IMS.EnterpriseServices.Domain\TransformationAndEnrichmentCoordinator.cs:IMS.EnterpriseServices の 140 行目。Facades.IMSFacade.<>c__DisplayClass1.b__0(Object o) in C:\P4\HEDI\AS2-dev-dotnext-campus-dev\AS\HEI\Src\CAS\IMS.EnterpriseServices.Facades\IMSFacade.cs:line 135

バインディング構成:

<customBinding>
  <!-- Secured, WS-Security message signing and encryption, custom binding for IMS endpoints -->
  <binding name="customHttpSecuredNoWSA">
    <security
      defaultAlgorithmSuite="Basic128Rsa15"
      authenticationMode="MutualCertificate"
      securityHeaderLayout="Lax"
      includeTimestamp="false"
      keyEntropyMode="CombinedEntropy"
      messageProtectionOrder="SignBeforeEncrypt"
      messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
      requireSignatureConfirmation="false"
      requireSecurityContextCancellation="false"
      allowSerializedSigningTokenOnReply="true">
      <localServiceSettings detectReplays="false" />
    </security>
    <textMessageEncoding
      messageVersion="Soap11"
      writeEncoding="utf-8">
      <readerQuotas
        maxArrayLength="1048576"
        maxStringContentLength="4194304"
        maxBytesPerRead="4194304"
        maxNameTableCharCount="4194304"
      />
    </textMessageEncoding>
    <httpTransport
      maxBufferPoolSize="4194304"
      maxBufferSize="1048576"
      maxReceivedMessageSize="1048576"
      proxyAddress="http://my.host.name:8888"
      useDefaultWebProxy="false"
    />
  </binding>
</customBinding>
4

1 に答える 1

3

Jon Skeet と Paolo からのコメントのおかげで、この問題を解決することができました。何か (おそらくファイアウォール) がホスト名/IP への接続を妨害しているようです。127.0.0.1 を使用しても機能しますが、WCF 構成で次のように指定する必要があります。

proxyAddress="http://127.0.0.1.:8888"

127.0.0.1 ループバック アドレスの末尾に余分なピリオドがあることに注意してください。ピリオドがない場合、WCF には、ローカル ループバックでのプロキシ サーバーの使用を防ぐための何らかのハードコーディングされたチェックがあります。(Microsoft がローカル ループバックをプロキシ サーバーの使用から除外するハードコードを明示的に組み込む理由はわかりませんが、少なくともこのトリックは機能します。)

于 2010-06-28T19:03:11.523 に答える