网站代码无法连接到同一服务器上的soap服务

时间:2011-11-02 20:53:33

标签: .net web-services soap web-config

我的ASP.NET网站从App_Code中的代码调用.net服务来检索一些信息。

网络服务托管在http://mydomain/ws/DirectoryService.asmx

每当我在任何服务器上部署一个网站,然后在托管所需的.net服务的同一台服务器上,一切都运行良好。

每当我将网站部署到托管Web服务的同一个Web服务器时,我都会收到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>

显然,问题在于绑定。它无法在同一台服务器中运行。如何解决问题?

P.S。如果我在web.config中注释掉绑定,那么网站加载正常,但它不能完全正常运行,因为它无法连接到服务。

更新:一个非常重要的细节:我的目标网站和.net服务都位于同一台服务器上,同一个IIS,但是绑定到不同的外部IP地址,因此问题不在网络中访问领域。

此外,如果我将网站的身份验证模式从Anonymous设置为Windows,一切正常,但每次访问网站时我都需要提供一个Windows信用卡。

2 个答案:

答案 0 :(得分:1)

问题解决了。事实证明,我需要编辑匿名身份验证设置,以便在使用时(在我的情况下总是如此),代码将在应用程序池的标识下,而不是IUSR: enter image description here

答案 1 :(得分:0)

确保您在不同的端口上运行Web服务和网站,并确保您的配置反映了正确的端口。

如果您在同一端口上运行两个网站(默认情况下这将是端口80,为HTTP保留),它们将相互冲突 - 其中一个将获得端口,另一个不会。

假设您将Web服务端口更改为8080,您将配置站点以使用端点:

address="http://mydomain:8080/ws/DirectoryService.asmx"