2013-05-15 126 views
1

我用一個get命令創建了一個非常簡單的WebAPI,它只返回一個整數。當我在瀏覽器中運行它時,它工作得很好。但是當我嘗試從解決方案中的另一個項目訪問問題時,我得到以下內容:ASP.NET MVC 4 - 401訪問被拒絕

2013-05-15 17:46:47,811 - 響應:狀態碼:401,ReasonPhrase:'訪問被拒絕'版本:1.1,內容:System.Net.Http.StreamContent,頭:

{

日期:星期三,2013年5月15日十六時46分47秒GMT

服務器:Microsoft-IIS/5.1

WWW - 認證:面議

WWW驗證:NTLM

連接:關閉

的Content-Length:4431

的Content-Type:text/html的

}

這裏是我的代碼使用。任何幫助真的會被讚賞。

var client = new HttpClient { BaseAddress = new Uri(_uri) }; 

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

var response = client.GetAsync(string.Format("api/Config/{0}", id)).Result; 

if (response.IsSuccessStatusCode) 
{ 
    var res = response.Content.ReadAsAsync<int>().Result; 
    return res; 
} 

回答

7

由於響應表明您未被授權訪問資源,可能是因爲您沒有傳入正確的憑據。看起來您的服務已啓用Windows身份驗證。嘗試做下面的事情,看看它是否有效:

HttpClientHandler hndlr = new HttpClientHandler(); 
hndlr.UseDefaultCredentials = true; 
var client = new HttpClient(hndlr) { BaseAddress = new Uri(_uri) }; 
+0

這樣做的伎倆,感謝一百萬。 – RagtimeWilly

+0

如果您使用調用MVC Core Web API並獲取401「未授權」響應,則上述解決方案適用。 – Francis