当我尝试从运行在IIS Express上的Web应用程序连接到Intranet Web服务时,Web服务返回403 Forbidden。当我通过单元测试或在Cassini或我的服务器上的IIS 7.5下运行的同一站点访问时,该服务正常工作。我的直觉告诉我这是一个配置问题,但我不确定从哪里开始寻找。从IIS Express访问远程Web服务会导致403禁止
当从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应用程序可能正在您的用户标识下运行。另一方面,IIS Express可能使用不同的Windows身份运行。可能是IUSR(我不知道IIS Express)。远程服务可能使用Windows身份验证 - 并且不允许匿名访问。因此,您需要在远程服务器上的IIS vdir上为IIS Express的身份(可能是machine \ IUSR,其中machine是运行IIS Express的计算机的名称)授予权限。 – Cheeso
@Cheeso我应该发布代码与我的问题。我正在提供身份验证,因此我很困惑。 – ahsteele