当我从控制台应用程序调用我的WEB API时,遇到:
远程服务器返回错误:(401)未经授权。
此应用程序在Interanet( Windows身份验证)
中运行 Uri uri = new Uri("http://myServer/api/main/foo");
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
using (Stream data = client.OpenRead(uri))
{
using (StreamReader sr = new StreamReader(data))
{
string result = sr.ReadToEnd();
Console.WriteLine(result);
}
}
更新
如果我更换
client.Credentials = CredentialCache.DefaultCredentials;
这一行
client.Credentials = new NetworkCredential(用户名,密码);
它工作正常,但我需要自动设置当前凭证。
有什么想法吗? 在此先感谢;)
答案 0 :(得分:2)
您在此处使用默认的Windows凭据
client.Credentials = CredentialCache.DefaultCredentials;
使用以下代码指定要进行身份验证的凭据:
var credential = new NetworkCredential(, , );
serverReport.ReportServerCredentials.NetworkCredentials = credential;
答案 1 :(得分:0)
以下行是导致此行为的原因:
client.Credentials = CredentialCache.DefaultCredentials;
实际上这一行分配了登录用户或被模拟用户的凭据(这只能在Web应用程序中使用),所以我认为你必须明确提供凭证(http://msdn.microsoft.com/en-us/library/system.net.credentialcache(v=vs.110).aspx),谢谢