現象:
asp.net中調用web services時提示錯誤:
請求因 HTTP 狀態 401 失敗:Access Denied。
將web services放到另一台伺服器問題又不存在該問題。
解決辦法:
1.建立方法:
#region GetCredentialCache
/// <summary>
/// 擷取CredentialCache
/// 解決訪問web service時提示沒有許可權的問題
/// </summary>
/// <returns></returns>
public static CredentialCache GetCredentialCache()
{
//許可權驗證web services地址
string WSUrl = RightsServicesUrl;
//Create an instance of the CredentialCache class.
CredentialCache cache = new CredentialCache();
// Add a NetworkCredential instance to CredentialCache.
// Negotiate for NTLM or Kerberos authentication.
cache.Add( new Uri(WSUrl), "Negotiate", new NetworkCredential("域使用者名稱", "域密碼", "域"));
return cache;
}
#endregion
2.為web services指定CredentialCache
web services引用名為RightsControl,添加如下代碼:
RightsControl rightsControl = new RightsControl();
//為web services指定CredentialCache,最重要的就是這一句
rightsControl.Credentials = GetCredentialCache();
//調用rightsControl的方法