我有一个发布RSS源的Intranet,我正在尝试从Windows域环境中同一IIS服务器上托管的另一个Intranet站点使用该RSS源。
两个网站都有
<authentication mode="Windows">
禁用匿名身份验证。
在本地开发(Windows Auth但不在域上)以下工作:
var request = HttpWebRequest.Create(feedUrl);
request.Credentials = CredentialCache.DefaultNetworkCredentials;
XElement f;
using (var response = request.GetResponse())
{
var reader = new XmlTextReader(response.GetResponseStream());
f = XElement.Load(reader);
}
return f;
但是,当我将其部署到生产环境(Windows 2008)时,我收到了401 Unauthorized异常。当以域用户身份登录时,我可以在浏览器中查看RSS源,但在尝试通过代码访问时,它似乎无法进行身份验证。
我也试过了:
request.Credentials = New System.Net.NetworkCredential("myUser","myPass","myDomain");
但仍然是401 Unauthorized。任何人都可以提出我所忽视的想法吗?
答案 0 :(得分:0)
当您在VS中本地运行时,CredentialCache.DefaultNetworkCredentials
将获得您的用户名,而当您在Web服务器上运行此客户端时,这将返回用于执行您的应用程序的帐户。这通常是Web服务器本地的NetworkService帐户。这就是为什么当您尝试使用此客户端对远程服务进行身份验证时,您将获得401.因此,您可以将ASP.NET MVC客户端应用程序配置为在具有访问远程服务权限的域帐户下执行。这可以在IIS管理器中的应用程序池的高级属性中完成。