2013-05-15 101 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