【发布时间】:2012-06-16 01:48:24
【问题描述】:
当我尝试从在 IIS Express 上运行的 Web 应用程序连接到 Intranet Web 服务时,该 Web 服务返回 403 Forbidden。当我通过单元测试或从在Cassini 上运行的同一站点或在我的服务器上的 IIS 7.5 下运行时,该服务可以正常工作。我的直觉告诉我这是一个配置问题,但我不确定从哪里开始寻找。
从运行在 IIS Express 上的站点访问远程 Web 服务时,什么会导致该服务返回 403 Forbidden?
为了澄清我正在访问的服务不是基于 SOAP 的。我正在设置一个特定的网络凭据并将其与我的请求一起传递,如下代码所示。
protected XDocument Search(Uri requestUri)
{
var nc = new NetworkCredential(this.config.ServiceUserName,
this.config.ServicePassword);
var cCache = new CredentialCache();
cCache.Add(requestUri, "Basic", nc);
var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.Credentials = cCache;
request.PreAuthenticate = true;
request.Method = WebRequestMethods.Http.Get;
var response = (HttpWebResponse)request.GetResponse();
return XDocument.Load(new StreamReader(response.GetResponseStream()));
}
【问题讨论】:
-
从哪里开始:您的 cassini 应用程序可能正在您的用户 ID 下运行。另一方面,IIS Express 可能以不同的 Windows 身份运行。可能是IUSR(我不知道IIS Express)。远程服务可能使用 Windows 身份验证 - 并且不允许匿名访问。因此,您需要在远程服务器上的 IIS vdir 上授予 IIS Express 身份的权限(可能是 machine\IUSR,其中 machine 是运行 IIS Express 的计算机的名称)。
-
@Cheeso 我应该在我的问题中发布代码。我正在提供身份验证,因此我很困惑。
标签: c# iis-express http-status-code-403 cassini