我正在尝试使用 RestSharp / System.Net.Http 通过 OData WebService 从我们的本地 Dynamics (v8) 访问数据,但在这种情况下,我有点卡住了。我现在摆弄了几天,问题似乎出在身份验证的某个地方,但我不知道我做错了什么。
我向其发送 GET 请求的 URLhttps://host.fqdn/systemenv01/api/data/v8.2/$metadata
使用的是能够正常登录动态的有效 Windows 域用户帐户。当我在 Firefox 或使用 NTLM-Auth 的最新版本的 Postman (v7.36) 中尝试此操作时,我得到了正确的元数据 XML 作为结果。
但是,当我使用 RestSharp 或简单地 System.Net.Http 尝试相同的操作时,我只得到一个 HTTP401-Unauthorized 作为响应。我试图做的是将用户凭据设置为 NetworkCredentials
var client = new RestClient(Url);
var request = new RestRequest(Method.GET);
client.FollowRedirects = true;
client.Timeout = -1;
client.PreAuthenticate = true;
request.Credentials = new NetworkCredential(User, Password);
但这似乎根本没有任何区别。有趣的是,响应包含一个名为“WWW-Authenticate”和值“Negotiate some.encrypted.string”的标题,但我不知道我应该用它做什么。如果有人可以帮助我解决这个问题,那就太好了!提前致谢!