401 - 未授权:由于凭据无效,访问被拒绝

时间:2011-11-20 16:23:01

标签: c# asp.net .net wcf

我正在尝试使用这样的第三方服务:

 var context = new DataSource(new Uri("http://api.olr.com/Service.svc"));

 context.Credentials = new NetworkCredential("username", "password", "http://api.olr.com/Service.svc");


 var agents = from a in context.Agents
                     select a;

 tbResponse.Text = agents.FirstOrDefault().ToString();

但得到回应:

<div class="content-container"><fieldset>
 <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
 <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
</fieldset></div>
</div>

我尝试使用浏览器访问该服务,但它正在运行。

以下行的第三个参数是domain。在域中放什么?服务网址和我一样吗?

context.Credentials = new NetworkCredential("username", "password", "http://api.olr.com/Service.svc");

2 个答案:

答案 0 :(得分:2)

NetworkCredential构造函数需要用户名,密码和域名,但您传入的是完整的Url而不是域名。

我会将该行更改为:

context.Credentials = new NetworkCredential("username", "password", "olr.com");

更新 - 解决方案有效:

context.Credentials = new NetworkCredential("username", "password");

是解决方案。

答案 1 :(得分:0)

您应该传递与传递的凭据关联的域。您提到的服务托管在某台机器上,我想您应该传递该机器的域名。