1

我用一个只返回一个整数的 get 命令创建了一个非常简单的 WebAPI。当我在浏览器中运行它时,它工作得很好。但是,当我尝试从解决方案中的另一个项目有问题地访问时,我得到以下信息:

2013-05-15 17:46:47,811 - 响应:状态代码:401,ReasonPhrase:“拒绝访问”,版本:1.1,内容:System.Net.Http.StreamContent,标题:

{

日期:格林威治标准时间 2013 年 5 月 15 日星期三 16:46:47

服务器:Microsoft-IIS/5.1

WWW-认证:协商

WWW-认证:NTLM

连接:关闭

内容长度:4431

内容类型:文本/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;
}
4

1 回答 1

7

由于响应表明您无权访问该资源,可能是因为您没有传递正确的凭据。看起来您的服务已启用 Windows 身份验证。尝试执行以下操作,看看它是否有效:

HttpClientHandler hndlr = new HttpClientHandler();
hndlr.UseDefaultCredentials = true;
var client = new HttpClient(hndlr) { BaseAddress = new Uri(_uri) };
于 2013-05-15T19:18:01.057 回答