Не удается подключиться к удаленной службе wcf из IIS - PullRequest
5 голосов
/ 26 мая 2011

Я могу подключиться к удаленной службе WCF с консоли или веб-сайта / веб-приложения, успешно запущенного на сервере VS. Тем не менее, когда я пытаюсь подключиться с веб-сайта IIS, я получаю следующую ошибку. Есть идеи?

Невозможно установить соединение, поскольку целевой компьютер активно отказался от него. 12.11.121.12:80

Ответы [ 3 ]

4 голосов
/ 06 июня 2011

Эта ошибка:

Невозможно установить соединение, потому что целевой компьютер активно отказался от него

Означает, что запрос на соединение успешно прошел на целевую машину (это не проблема брандмауэра) на заданном порту, и целевая машина не прослушивала входящие соединения на этом порту, поэтому ОС отклонила попытку подключения .

Остальная часть вашей ошибки идентифицирует компьютер 12.11.121.12 и номер порта 80, на котором было предпринято соединение.

Ошибка указывает, что сервер не работает на целевой машине. Если вы знаете, сервер работает на компьютере, к которому вы пытаетесь подключиться, потому что вы можете подключиться к нему из другого приложения, то это говорит о том, что ваши данные соединения неправильно настроены на веб-сайте.

Итак, некоторые вещи, которые нужно проверить:

  • Есть ли какие-либо различия между деталями конфигурации app.config / web.config для целевого веб-сервиса? В частности, имя компьютера (12.11.121.12) и номер порта (80) могут показаться потенциальными.
  • Работаете ли вы на веб-сайте IIS на той же машине, где работает консоль / веб-приложение? Если нет, разрешают ли обе машины имя целевого сервера (например, вы используете someserver.org вместо 12.11.121.12, и оно разрешается на другой IP-адрес, поскольку один сервер является внешним, а другой - внутренним?
0 голосов
/ 01 мая 2012

Странно, я получил эту ошибку, когда useDefaultWebProxy был «истинным» из веб-приложения, но точно такой же код и настройки работали нормально в классе модульного теста.

Оказывается, что веб-приложение использовало прокси веб-браузера (корпоративная политика) в https://foo/bar:1234. Когда я установил это явно, используя:

<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name=...
          useDefaultWebProxy="false" proxyAddress="https://foo/bar:1234"
       ...

Я получил ошибку:

ServicePointManager не поддерживает прокси со схемой https

Итак, я изменил адрес прокси на http, а не на https, и это сработало.

0 голосов
/ 13 июня 2011

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

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