我正在尝试使用这样的第三方服务:
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");
答案 0 :(得分:2)
NetworkCredential构造函数需要用户名,密码和域名,但您传入的是完整的Url而不是域名。
我会将该行更改为:
context.Credentials = new NetworkCredential("username", "password", "olr.com");
更新 - 解决方案有效:
context.Credentials = new NetworkCredential("username", "password");
是解决方案。
答案 1 :(得分:0)
您应该传递与传递的凭据关联的域。您提到的服务托管在某台机器上,我想您应该传递该机器的域名。