401通过C#中的Azure流量管理器连接到API时未经授权



我具有以下代码,该代码成功连接到C#中的第三方API:

using (var client = new WebClient())
{
    client.Credentials = new NetworkCredential(login.Username, login.Password);
    var xml = client.DownloadString(url);
    Debug.Write(xml);
}

直接连接到API时,这可以正常工作。但是,我试图利用Azure流量管理器将负载扩散到多个端点,并且在执行此操作时,我会获得401个未经授权的例外。它似乎使用邮递员和在请求中配置基本验证的工具正确地工作。

我试图将代码转换为Restsharp,但似乎具有相同的症状。

这是Fiddler使用一些不同技术的请求:

c#/webclient直接到API端点(成功(

GET <ApiUrl> HTTP/1.1
Host: <ApiHost>
Connection: Keep-Alive
401 Unauthorized
GET <ApiUrl> HTTP/1.1
Authorization: Basic <AuthToken>
Host: <ApiHost>

c#/webclient到Azure流量管理器(未经授权401(

GET <TrafficManagerApiUrl> HTTP/1.1
Host: <TrafficManagerApiHost>
401 Unauthorized
GET <ApiUrl> HTTP/1.1
Host: <ApiHost>

Azure流量管理器(成功(的邮递员

GET <TrafficManagerApiUrl> HTTP/1.1
Host: <TrafficManagerApiHost>
Connection: keep-alive
Authorization: Basic <AuthToken>
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Postman-Token: 13396800-33ab-8d7b-664f-68b99e8f4ac1
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

302 Redirect
GET <ApiUrl> HTTP/1.1
Host: <ApiHost>
Connection: keep-alive
Authorization: Basic <AuthToken>
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Postman-Token: 13396800-33ab-8d7b-664f-68b99e8f4ac1
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: JSESSIONID=<jsessionid>

我没有正确处理Azure流量管理器的重定向。

答案在此处详细介绍:

https://stackoverflow.com/a/28671822/86191

相关内容

  • 没有找到相关文章

最新更新