您好,我需要使用 kestral 服务器更新在 Service Fabric 集群上运行的 ASP.NET Core 服务的 maxurllength。 查看其他解决方案,人们建议对注册表和 web.config 进行更改,但如果 Kestral 服务器在 Service Fabric 上运行 ASP.NET Core,我们没有任何 web.config 文件。 Kestral server limits也没有公开这样做的方法。在 ASP.net core 中可以这样做吗?
更新:
我使用 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 段是一些编码字符串,这就是问题所在。
最佳答案
对于 ASP.NET Core 1.1 KestrelServerLimits.MaxRequestLineSize
应该就是您要找的。p>
对于 ASP.NET Core 2.1 KestrelServerLimits.MaxRequestLineSize
应该就是您要找的。p>
两者的默认值都是 8Kb,因此应该比 Chrome 和其他浏览器提供的默认 2083 Url 长度大得多。
如果您使用 Service Fabric 反向代理公开 API,则问题应该出在反向代理而不是 Kestrel。
Service Fabric 反向代理使用 Windows HTTP.sys 驱动程序公开 http 终结点,作者:default每个段限制为 260 个字符(每个斜杠“/”之间的值),如果是这种情况,您应该使用其他值配置您的计算机,在这种情况下,您应该将值设置为 UrlSegmentMaxLength
为此,您必须创建一个名为 UrlSegmentMaxLength
的 DWORD在以下注册表项下:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
并将其设置为 0 到 32,766 之间的数字。
我认为如果您提供真正的问题,我们可以帮助提供更好的解决方案。
关于c# - 在asp.net core中设置HTTPGet调用的MaxURLLength,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280723/