【发布时间】:2011-11-16 06:25:36
【问题描述】:
我有一个托管在集群环境中的 Web 服务。调用此服务的 Web 应用程序也托管在集群环境中,但位于不同的 IIS6 服务器集上。因此,应用程序服务器是 appserv1 和 appserv2,服务服务器是 svcserv1 和 svcserv2。我们不控制访问哪些服务器,因为我们通常将它们分别称为 appserv 或 svcserv。
该服务是 WCF 服务,但已创建为与 .Net 2.0 Web 服务框架兼容。应用程序在运行时运行良好,但可能有 > 35% 的时间服务响应 Exception: The request failed with HTTP status 401: Unauthorized. 错误。
我看到其他人建议直接设置凭据,我的应用程序正在执行以下操作。
Dim cc As New CredentialCache()
Dim service As WCFServiceRef.Reports
service = New WCFServiceRef.Reports
service.Url = serviceURL
cc.Add(New Uri(service.Url), "Negotiate", New NetworkCredential("username", "password"))
service.Credentials = cc
reportData = service.GenerateReport(reportid, True, parameters, "PDF", Environment)
我还尝试通过更改参考 URL 以绕过负载管理器并直接访问服务器的域名来直接访问各个服务器,但这并没有任何区别。
我还看到了this MSDN KB 文章,但由于我无法直接访问服务器配置(而且很难进行任何更改),我想确保我无法从应用端。请注意,服务器已配置为 Windows 身份验证,不允许匿名访问。
谢谢!
【问题讨论】:
标签: .net wcf iis-6 wcf-security windows-authentication