我正在尝试从我的桌面运行的控制台应用程序调用需要授权的Web API 2方法,但我收到了401未经授权的错误。我知道我有授权,因为当我从Web浏览器进行相同的调用时,它可以正常工作。所以浏览器可以获取我的默认登录ID /密码并发送到API,但.NET的WebClient不能?这似乎很荒谬。必须有一种方法在不输入我的ID /密码的情况下完成此操作。
以下是我在控制台应用程序中使用的代码,但它无法正常工作。
这是使用Windows身份验证的内部网络内容。
这会抛出异常“远程服务器返回错误:(401)未经授权”。
using(var c = new WebClient())
{
c.UseDefaultCredentials = true;
string value = c.DownloadString("http://localhost:62659/api/Store/GetData");
}
我也尝试过以下操作,当我将鼠标悬停在DefaultNetworkCredentials上时,用户名/密码是空字符串。为什么.NET不能弄清楚这一点呢?
using(var c = new WebClient())
{
var creds = new CredentialCache();
var uri = new Uri("http://localhost:62659/api/Store/GetData");
creds.Add(uri, "ntlm", System.Net.CredentialCache.DefaultNetworkCredentials);
c.Credentials = creds;
string value = c.DownloadString(uri);
}