Код веб-сайта не может подключиться к мыльной службе на том же сервере - PullRequest
1 голос
/ 03 ноября 2011

Мой веб-сайт ASP.NET вызывает службу .net из кода в App_Code для получения некоторой информации.

Веб-служба размещается на http://mydomain/ws/DirectoryService.asmx.

Всякий раз, когда я развертываювеб-сайт на любом сервере, кроме того же сервера, на котором размещена необходимая служба .net, все работает хорошо.

Всякий раз, когда я развертываю сайт на том же веб-сервере, на котором размещена веб-служба, яошибка get 401.1.

У меня есть следующая привязка, определенная в web.config сайта:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="LR Directory ServiceSoap" 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="None">
            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://mydomain/ws/DirectoryService.asmx" binding="basicHttpBinding" bindingConfiguration="LR Directory ServiceSoap" contract="ExpertsServiceReference.LRDirectoryServiceSoap" name="LR Directory ServiceSoap" />
    </client>
  </system.serviceModel>

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

PS Если я закомментирую привязку в web.config, веб-сайт загружается нормально, но он не полностью функционален, поскольку не может подключиться к службе.

ОБНОВЛЕНИЕ: Aочень важная деталь: мой целевой веб-сайт и служба .net расположены на одном сервере, в одном и том же IIS, но связаны с разными внешними IP-адресами, поэтому проблема не может быть в поле доступа к сети.

Кроме того, если я устанавливаю режим аутентификации веб-сайта с анонимного на Windows, все работает нормально, но мне нужно предоставлять кредиты Windows каждый раз, когда я захожу на сайт.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Проблема решена. Оказалось, что мне нужно было отредактировать настройки анонимной аутентификации, чтобы при использовании (в моем случае это всегда) код шел под идентификатором пула приложений, а не IUSR: enter image description here

0 голосов
/ 03 ноября 2011

Убедитесь, что вы используете веб-сервис и веб-сайт на разных портах , и убедитесь, что ваша конфигурация отражает правильный порт.

Если вы используете два веб-сайта на одном и том же порту (по умолчанию это будет порт 80, зарезервированный для HTTP), они будут конфликтовать друг с другом - один из них получит порт, а другой - нет.

Скажем, вы изменили порт веб-службы на 8080, вы должны настроить сайт для использования конечной точки:

address="http://mydomain:8080/ws/DirectoryService.asmx"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...