【问题标题】:WCF sometimes return 401WCF 有时会返回 401
【发布时间】:2016-12-29 14:13:59
【问题描述】:

由于我们将一些网站从 Windows Server a 2008 R2 迁移到 Windows Server 2012,一个网站有时会从它在同一服务器上调用的 WCF 服务收到错误 401。在失败之前,这可以工作约 1-2 天到约 1 小时。这似乎只发生一次,之后它会再次工作 X 时间。

这个问题似乎只出现在这个网站上,还有其他几个在另一个服务器上调用这个 WCF 服务,迁移后没有问题。

两个站点在同一台服务器上,但在不同的站点和应用程序池上。

IIS 日志:

[DATE1] 12:03:40 [IP1] POST ServiceName.asmx - [PORT1]- [IP2] - - 401 0 0 0
[DATE1] 12:03:40 [IP1] POST ServiceName.asmx - [PORT1] - [IP2] - - 401 1 3221225581 0

来自网站的错误:

ServiceName / ProcessData - DataAccess FunctionName- 消息:HTTP 请求未通过客户端身份验证方案“协商”进行授权。从服务器收到的身份验证标头是“协商,NTLM”。堆栈跟踪:

配置:

网站使用域帐户访问使用身份验证模式窗口的 WCF 服务。

网站绑定

<binding name="ReportSummaryFacadeSoap" 
         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="TransportCredentialOnly">            
          <transport clientCredentialType="Windows" 
                     proxyCredentialType="None" realm=""/>
          <message clientCredentialType="UserName" 
                   algorithmSuite="Default"/>
      </security>
</binding>

我希望有人能阐明这一点。

致以诚挚的问候

帕特里克

【问题讨论】:

    标签: asp.net web-services wcf authentication soap


    【解决方案1】:

    这要归功于 Hyper-V 负载平衡,它没有正确配置。会话持久化的配置有点低,所以当它开始调用第一台机器和几次调用后,它切换到负载平衡中的第二台机器,导致 401 响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 2011-01-03
      • 2012-11-01
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多