Настройка MaxURLLength вызова HTTPGet в ядре asp.net

Привет, мне нужно обновить maxurllength основной службы asp.net, которая работает в кластере сервисной фабрики с использованием сервера kestral. Глядя на другие решения, люди рекомендовали вносить изменения в реестр и web.config, но в случае сервера Kestral, работающего с ядром asp.net на сервисной фабрике, у нас нет файла web.config. Ограничения сервера Kestral также не предоставляет способ сделать это. Возможно ли это сделать в ядре ASP.net?

Обновлять:

Я использовал обратный прокси-сервер Service Fabric для доступа к службе, и пример проблемного URL-адреса:

http://localhost:19081/{appname}/{servicename}/test-backend/v1.0/mode/1/context/5e2550ec-539a-4ea0-81b5-f783ce3f7c48/file/60917927-8a7d-4702-93e4-e2a5ea337937/version/2d826211703581a186b3d5d840e78117903189a5/openfile/W3sia2V5IjoiNjA5MTc5MjctOGE3ZC00NzAyLTkzZTQtZTJhNWVhMzM3OTM3OjJkODI2MjExNzAzNTgxYTE4NmIzZDVkODQwZTc4MTE3OTAzMTg5YTU6MCIsImNvbnRleHRJZCI6IjVlMjU1MGVjLTUzOWEtNGVhMC04MWI1LWY3ODNjZTNmN2M0OCIsImlNb2RlbElkIjoiNjA5MTc5MjctOGE3ZC00NzAyLTkzZTQtZTJhNWVhMzM3OTM3IiwiY2hhbmdlU2V0SWQiOiIyZDgyNjIxMTcwMzU4MWExODZiM2Q1ZDg0MGU3ODExNzkwMzE4OWE1Iiwib3Blbk1vZGUiOjEsIl9fbmFtZV9fIjoiSU1vZGVsVGlsZVJwY0ludGVyZmFjZV9JTW9kZWxUb2tlbiIsIl9fdW5yZWdpc3RlcmVkX18iOmZhbHNlfSwiMHgyWdpc3RlcmVkX18iOmZhbHNlfSwiMHgy

Проблема заключается в последнем сегменте URL-адреса, который представляет собой закодированную строку.


person Kayani    schedule 13.11.2018    source источник
comment
Что вы хотите установить?   -  person mjwills    schedule 13.11.2018
comment
значение вроде 1096 может быть   -  person Kayani    schedule 13.11.2018


Ответы (2)


Для ASP.NET Core 1.1 KestrelServerLimits.MaxRequestLineSize< /a> должно быть тем, что вы ищете.

Для ASP.NET Core 2.1 KestrelServerLimits.MaxRequestLineSize должно быть тем, что вы ищете.

Значение по умолчанию для обоих составляет 8 КБ, поэтому оно должно быть намного больше, чем длина URL-адреса по умолчанию 2083, предоставляемая Chrome и другими браузерами.

Если вы предоставляете свои API с помощью обратного прокси-сервера Service Fabric, проблема должна заключаться в обратном прокси-сервере, а не в Kestrel.

Обратный прокси-сервер Service Fabric использует драйвер Windows HTTP.sys для предоставления конечных точек http с помощью по умолчанию ограничено 260 символами на сегмент (значения между каждой косой чертой '/'), в этом случае вам следует вместо этого настроить свой компьютер с другими значениями, в В этом случае вы должны установить значение для UrlSegmentMaxLength

Для этого вам нужно создать DWORD с именем UrlSegmentMaxLength в следующем разделе реестра: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters и задать для него число от 0 до 32 766.

Я думаю, если вы представите реальную проблему, мы могли бы помочь с лучшим решением.

person Diego Mendes    schedule 13.11.2018
comment
Отличный улов. Я использовал обратный прокси-сервер сервисной фабрики, и вот где он сломался. Таким образом, сервер пустельги не ограничивает меня, обратный прокси-сервер связан с тем, что один из сегментов URL превышает максимальное ограничение в 260. Я попробую изменить реестр и сообщу вам, работает ли он. Ваше здоровье :) - person Kayani; 15.11.2018
comment
KerstelServerLimits работает, если вы размещаете его на Kerstel. Например. В настоящий момент службы приложений Azure работают в IIS и используют обратный прокси-сервер для размещения приложений .NET Core. Так что конфиг Kerstel в этом случае ни на что не повлияет... - person Major; 04.09.2020

Одно примечание: приложения .NET Core также можно размещать в IIS. В этом случае обратный прокси общается с Kerstel. Также во время dotnet опубликуйте файл web.config, созданный для этого случая, чтобы IIS работал с .NET Core.

Таким образом, в этом сценарии это означает, что вы должны настроить эти изменения уровня хостинга в обоих местах. У меня было много проблем с настройкой IIS в модуле проекта .NET Core, найденном этот пост.

person Major    schedule 04.09.2020