Как решить проблему «слишком длинный заголовок запроса» в веб-приложении Azure - PullRequest
0 голосов
/ 11 июля 2019

Пользователи, входящие на наш административный портал, получают права через Active Directory. Они все чаще сталкиваются с ошибкой 400 Ошибка Bad Request (слишком длинный заголовок запроса).

Это задокументировано Microsoft: https://support.microsoft.com/en-us/help/2020943/http-400-bad-request-request-header-too-long-response-to-http-request

Их предлагаемое решение - добавить две записи реестра - MaxFieldLength и MaxRequestBytes - которые контролируют объем данных, разрешенных в URL.

Однако наши веб-сайты настроены в Azure как веб-приложения. Согласно различным источникам, включая этот вопрос SO - Как создать запись HKLM на веб-сайте Azure - вы не можете изменить реестр в веб-приложении.

Есть ли способ обойти это? Еще одно забавное решение, предложенное MS, - «Уменьшить количество групп Active Directory, членом которых является пользователь». Но мы уже понизили это до двух, но проблема сохраняется. Самым крупным компонентом URL является параметр 'state' в QueryString.

1 Ответ

1 голос
/ 11 июля 2019

Предполагается, что вы используете asp.net-core-2.0, указанный в вашем теге.Вы можете настроить это на WebHost, используя .UseKestrel(x => x ...).

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            // This is the line you want to add!
            .UseKestrel(x =>
            {
                x.Limits.MaxRequestHeadersTotalSize = <your value?>;
            })
            .UseStartup<Startup>();
}

Доступно больше опций, таких как MaxRequestHeaderCount и MaxRequestLineSize.

...