當我嘗試從運行在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