我在.NET Core 2.2应用程序中有一些奇怪的行为。
[当尝试通过HttpClient或RestSharp发出HTTP请求时,只要我请求的站点托管在different服务器上而不是调用应用程序所在的服务器上,我就会收到200响应,就像我期望的那样,很棒。
但是,一旦我尝试访问同一台服务器上的站点(并且我已经尝试在两台服务器上托管的完全相同的站点上进行尝试,就会得到401未经授权。
供参考,我请求的站点是.Net Framework上的ASP.NET Web API,它使用Windows身份验证。
[我已经在.Net Framework 4.6.2和.Net Core 3.0中进行了尝试,并且它们都可以正常工作,并且不会出现此问题-似乎对我来说只会影响2.2。
我知道有"Loopback Check Issue",但是如果真是这样,我希望.Net Framework和.Net Core 3.0会遇到相同的问题。
我也知道This GitHub Issue,但似乎在2.2中已解决。
供参考,这里是一些示例代码,演示了HttpClient的问题(所有.Net版本均使用相同的代码)
static async Task Main(string[] args)
{
await MakeRequest();
}
public async static Task MakeRequest()
{
Console.WriteLine("Enter URL:");
var url = Console.ReadLine();
var uri = new Uri(url);
try
{
var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true });
var res = await client.GetAsync(uri);
res.EnsureSuccessStatusCode();
var content = await res.Content.ReadAsStringAsync();
Console.WriteLine(res.StatusCode);
Console.WriteLine(content);
}
catch (Exception e)
{
Console.WriteLine($"Error: {e}");
}
finally
{
await MakeRequest();
}
}
有什么想法吗?
由于2.2.7将是2.2.5的更新版本,因此在运行时2.2.7中不会发生此问题。仅更新服务器上的运行时2.2.7是否可以接受?