当请求长度超过 320 个字符时,我收到 400 bad request - invalid Url

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

不知道可能是什么原因。还在 Web.config 中添加了以下内容。 maxUrlLength =“1024”maxQueryStringLength =“1024”requestPathInvalidCharacters =“”maxRequestLength =“1024”relaxedUrlToFileSystemMapping =“true” 我对 uri 参数进行编码并发送请求,但始终得到无效的 url。 网址:http://localhost:51840/api/xxxxxxx/xxxxxxxxxxxx/n4cEF3OM0LC0q8I6OMe0XdHo8evXnoeyC06A%252fL%252fu0a%252f6e0RQrdxl2%252fPkSKNfh4aEQm78TReX1zIfGDB1bgH%252bGBEI%2 52fBw6i0DwQ6%252b3dk6yjs1UZqqICQye6QqVX8bJT%252fBK7GE8a22FeXJiPVtEgFRmp4WcHc4pIRHaE6QGK28kiASGFfUC9tDdRZhLfmYJsluGpsseSUOC5Inxlf3fTFNe7sg7gixrLTlwh fJIATZWWsPc%252bfo6BITTFA%253d%253d

如果我将网址减少到以下内容,它就可以正常工作。 http://localhost:51840/api/xxxxxxx/xxxxxxxxxxxx/n4cEF3OM0LC0q8I6OMe0XdHo8evXnoeyC06A%252fL%252fu0a%252f6e0RQrdxl2%252fPkSKNfh4aEQm78TReX1zIfGDB1bgH%252bGBEI%252fB w6i0DwQ6%252b3dk6yjs1UZqqICQye6QqVX8bJT%252fBK7GE8a22FeXJiPVtEgFRmp4WcHc4pIRHaE6QGK28kiASGFfUC9tDdRZhLfmYJsluGpsseSUOC5Inxlf3fTFNe7sg7gixrLTlwhfJIATZ WWsPc%252bfo6BI

当最后 10 个以上字符时,它给了我一个糟糕的请求。非常感谢任何帮助。

c# asp.net asp.net-web-api uri
3个回答
29
投票

只是记录我的经历:

我的问题是@Mark 在问题评论中指出的问题:

默认最大url段长度为260

他建议在注册表中增加这个限制,但我不想有这种麻烦。 @Vignesh T 的建议效果更好:

将 url 段替换为查询字符串参数,效果很好

总而言之,而不是这样做:

http://path.to.website/very-long-string-goes-here/

我刚刚做了:

http://path.to.website/?key=very-long-string-goes-here

14
投票

在powershell中运行

Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\HTTP\Parameters -Name UrlSegmentMaxLength -Value 2000 -Type "Dword"

然后做

net stop http
net start http

https://blogs.msdn.microsoft.com/amyd/2014/02/06/response-400-bad-request-on-long-url/


0
投票

我也有同样的问题。 URL 字符最大长度在 HTTP.SYS 注册表中定义,重新启动服务器解决了该问题。

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