EndpointNotFoundException при вызове веб-службы с веб-сайта, но не из консольного приложения - PullRequest
3 голосов
/ 17 февраля 2010

Я получаю это EndpointNotFoundException при вызове веб-службы с веб-сайта, в то время как тот же самый точный вызов работает, если я делаю это из консольного приложения. Вот более подробное сообщение об исключении:

Could not connect to https://******. TCP error code 10060:
A connection attempt failed because the connected party did not properly
respond after a period of time, or established connection failed because
connected host has failed to respond ***.***.***.***:443. 

Я подтвердил, что привязки (в web.config и app.config) одинаковы, поэтому я не понимаю, почему это работает в одном случае, а не в другом.

<basicHttpBinding>
<binding name="ServicePortBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
 receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
 bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
 maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
 messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
 useDefaultWebProxy="true">
 <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
  maxBytesPerRead="4096" maxNameTableCharCount="16384" />
 <security mode="Transport">
  <transport clientCredentialType="None" proxyCredentialType="None"
   realm="" />
  <message clientCredentialType="UserName" algorithmSuite="Default" />
 </security>
</binding>
</basicHttpBinding>

Дайте мне знать, если вам нужна дополнительная информация.

EDIT
Хорошо, вот кое-что, что я пропустил, что может быть причиной проблемы. Все это происходит за брандмауэром компании. Может ли быть так, что указанный брандмауэр не позволяет запускаться с веб-сайта, потому что это HTTP-соединение, порожденное существующим «веб-процессом»? В то время как в консольном приложении это просто одно соединение.

Ответы [ 3 ]

4 голосов
/ 18 февраля 2010

Вам необходимо добавить обход прокси в вашем web.config

  <system.net>
    <defaultProxy>
      <proxy
      usesystemdefault = "true"
      proxyaddress="http://theproxyaddress:PortNumber"
      bypassonlocal="false"
/>
    </defaultProxy>
  </system.net>

Это позволит вам открыть соединение со службой через ваши брандмауэры

0 голосов
/ 17 февраля 2010

Звучит и пахнет как проблема с разрешением.

Ваше веб-приложение обычно работает как ASPNET или NETWORK SERVICE, а ваше консольное приложение будет работать как вы (ваша учетная запись).

Есть ли вероятность, что там есть проблема?

Проводите ли вы какую-либо аутентификацию на стороне сервера WCF, которая может работать для обычной учетной записи пользователя, но не для ASPNET / NETWORK SERVICE ??

0 голосов
/ 17 февраля 2010

Вы пытались использовать wireshark (или Fiddler, если это HTTP), чтобы проверить, не являются ли исходящие вызовы эквивалентными и правильными?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...