EndpointNotFoundException «Не удалось подключиться», поскольку «целевой компьютер активно отказался от него». Подключение через Fiddler - PullRequest
4 голосов
/ 28 июня 2010

Я столкнулся с проблемой при попытке перенаправить запросы моего клиента WCF через Fiddler. Я искал в Интернете высокий и низкий уровень и обнаружил только две ссылки на проблемы с Fiddler, когда службы WCF настроены на прослушивание IPv4, но IPv6 включен. Однако, хотя моя проблема похожа, она, похоже, не является моей проблемой.

У меня возникают проблемы с подключением к службам, размещенным на портах IPv4. Следующее исключение выдается моими клиентами WCF, когда мои привязки настроены на использование прокси-сервера fiddler. Я отключил поддержку IPv6 в настройках Fiddler и убедился, что мои привязки правильно настроены для использования прокси.

Отчет об исключении:

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 в System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) в System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Сокет и сокет, IP-адрес и адрес, Состояние ConnectSocketState, IAsyncResult asyncResult, Тайм-аут Int32, Исключение и исключение) --- конец внутреннего трассировка стека исключений --- в System.Net.HttpWebRequest.GetRequestStream (TransportContext & контекст) в System.Net.HttpWebRequest.GetRequestStream () в System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream () --- Конец внутренней трассировки стека исключений ---

Трассировка стека сервера: в System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream () в System.ServiceModel.Channels.HttpOutput.Send (TimeSpan тайм-аут) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.SendRequest (Message сообщение, TimeSpan timeout) в System.ServiceModel.Channels.RequestChannel.Request (Message сообщение, TimeSpan timeout) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (Message сообщение, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannel.Call (String действие, логическое одностороннее, Операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime операция) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Шеззаде сообщение)

Исключение переброшено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в IMS.EnterpriseServices.Facades.Campus.EducationalPartner.EducationalPartnerSvc.FindByClientString (String clientString) в IMS.EnterpriseServices.Facades.Campus.EducationalPartner.EducationalPartnerSvcClient.FindByClientString (String clientString) в C: \ P4 \ HEDI \ AS2-DEV-dotnext-Кампус-DEV \ AS \ ХЕИ \ Src \ CAS \ IMS.EnterpriseServices.Facades.Campus \ Service Ссылки \ EducationalPartner \ Reference.cs: линия 428 в IMS.EnterpriseServices.Facades.Campus.CampusEntityFacade.GetEPID (String clientString) в C: \ Р4 \ HEDI \ AS2-DEV-dotnext-Кампус-DEV \ AS \ \ Src HEI \ КАС \ IMS.EnterpriseServices.Facades.Campus \ CampusEntityFacade.cs: линия 37 в IMS.EnterpriseServices.Transformation.Domain.TransformationSvc.TransformCreateGroupRequest (createGroupRequestMessage сообщение) в C: \ Р4 \ HEDI \ AS2-DEV-dotnext-Кампус-DEV \ AS \ \ Src HEI \ КАС \ IMS.EnterpriseServices.Transformation.Domain \ TransformationSvc.cs: линия 106 вIMS.EnterpriseServices.113 в IMS.EnterpriseServices.Domain.TransformationAndEnrichmentCoordinator.ProcessCreateGroupRequestMessage (сообщение createGroupRequestMessage) в C: \ P4 \ HEDI \ AS2-dev-dotnext-campus-dev \ AS \ HEI \ Src \ CAS \ ИТ-преобразователях IMS.SMS.: строка 140 в IMS.EnterpriseServices.Facades.IMSFacade. <> c__DisplayClass1.b__0 (Объект o) в C: \ P4 \ HEDI \ AS2-dev-dotnext-campus-dev \ AS \ HEI \ Src \ CAS \ IMS.EnterpriseServices.Facades \ IMSFacade.cs: строка 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>

1 Ответ

3 голосов
/ 28 июня 2010

Благодаря комментариям от Джона Скита и Паоло я смог решить эту проблему.Похоже, что что-то (возможно, брандмауэр) мешает подключению к моему имени хоста / ip.Использование 127.0.0.1 работает, однако в конфигурации WCF его необходимо указать следующим образом:

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

Обратите внимание на дополнительный период в конце адреса обратной связи 127.0.0.1.Без периода у WCF есть какая-то жестко заданная проверка, чтобы предотвратить использование прокси-сервера в вашем локальном шлейфе.(Почему Microsoft явно встроит жестко запрограммированное исключение локальной обратной связи из-за использования прокси-сервера, я не знаю, но по крайней мере этот прием работает.)

...