。NET Core 2.2在使用Windows Auth调用同一服务器上的IIS站点时接收401未经授权的响应

问题描述 投票:0回答:1

我在.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();
        }
    }

有什么想法吗?

c# iis .net-core windows-authentication .net-core-2.2
1个回答
0
投票
最新的2.2 sdk版本是2.2.4。

由于2.2.7将是2.2.5的更新版本,因此在运行时2.2.7中不会发生此问题。仅更新服务器上的运行时2.2.7是否可以接受?

© www.soinside.com 2019 - 2024. All rights reserved.