(401)从控制台应用程序调用Web API时出现未经授权的错误

时间:2014-01-28 04:59:54

标签: asp.net-web-api

当我从控制台应用程序调用我的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(用户名,密码);

它工作正常,但我需要自动设置当前凭证。

有什么想法吗? 在此先感谢;)

2 个答案:

答案 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),谢谢