.NET Core 2.2 Получение 401 несанкционированного ответа при вызове сайта IIS на одном сервере с проверкой подлинности Windows - PullRequest
0 голосов
/ 17 октября 2019

У меня странное поведение в приложении .NET Core 2.2.

При попытке сделать HTTP-запрос (через HttpClient или RestSharp), пока запрашиваемый сайт размещенна отличном сервере от того, где находится мое вызывающее приложение, я получаю ответ 200, как я и ожидал, и это здорово.

Однако, как только я пытаюсь нажатьсайт на том же сервере (и я пробовал это с тем же самым сайтом, размещенным на обоих серверах), я получаю 401 Несанкционированный.

Для справки, сайт, который я запрашиваю, является ASP.NET WebAPI на .Net Framework, и он использует Windows Auth.

Я пробовал это в .Net Framework 4.6.2 и .Net Core 3.0, и оба они работают нормально, и не демонстрируют эту проблему -- кажется, что это влияет на 2.2 для меня.

Я знаю, что есть «Проблема проверки петли» , но если бы это было так, я бы ожидал .Net Framework и .NetCore 3.0 столкнется с той же проблемой.

Я такжеo Я знаю о Эта проблема GitHub , которая, кажется, была решена в 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();
        }
    }

Есть идеи?

РЕДАКТИРОВАТЬ: SDK используется: 2.2.104

Время выполнения используется: 2.2.5

1 Ответ

0 голосов
/ 22 октября 2019

2.2.5 представляется версией среды выполнения ядра .NET вместо версии .NET CORE SDK.

Последняя версия 2.2 SDK - 2.2.4.

Поскольку версия 2.2.7 будет версией обновления 2.2.5, и эта проблема не возникает во время выполнения 2.2.7. Допустимо ли просто обновить среду выполнения 2.2.7 на вашем сервере?

...