2011-11-02 51 views
1

我的ASP.NET网站呼吁在App_Code文件的代码的.NET服务来获取一些信息。一个网站的代码无法连接到一个SOAP服务在同一台服务器

Web服务在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中注释掉绑定,则网站加载正常,但它不完全正常工作,因为它无法连接到服务。

UPDATE:一个非常重要的细节:我的目标网站和一个.net服务都位于同一个服务器上,同一个IIS,但绑定到不同的外部IP地址,所以问题不能在网络访问字段。

而且,如果我设置从匿名网站的身份验证模式到Windows,一切工作正常,但我需要提供一个窗口,每个我访问该网站时creds。

+0

嗯,'bypassProxyOnLocal =“假“'? –

+0

401.1表示服务正在运行,但您无法进行身份验证。证书是否正确传递? –

+0

@Chris - 试图将其设置为true - 无结果。 –

回答

1

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

+0

认证匿名。哇! :-)对不起,这给了我一个很大的笑容。我知道你不是想给我提供娱乐,但是... – Cyberherbalist

+0

修正了它。虽然可能不应该有一个有趣的回答让其他人得到微笑=) –

0

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

如果您正在运行在同一端口上的两个网站(默认情况下,这将是80端口,用于HTTP预留),他们会互相冲突 - 其中一人将获得端口,其他的不会。

假如你改变了Web服务端口为8080,你会配置站点以使用端点:

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

服务和站点位于同一台服务器上,但绑定到不同的外部IP,所以端口不会成为问题。我在问题主体中添加了一些可能有所帮助的更多信息。特别是Windows Auth关于整个事情的工作。所以这是由于绑定设置问题对服务器的身份验证。 –

+0

@ MaximV.Pavlov - DNS/hosts文件怎么样? – Oded

+0

检查它。 DNS解决得很好。试图将所有主机名改为ip - 同样的问题。正如我所说 - 如果我打开整个网站的Windows身份验证,而不更改任何其他配置,一切正常。问题在于IIS不允许进行应用程序间通信或其他内容。 –

相关问题