我正在尝试让我的WEB API接受长请求字符串,但无论我尝试什么,我最终得到400 Bad Request。我的方法可以通过以下方式访问:
代码是
[HttpGet]
public IHttpActionResult method(string input) {
//Do Stuff
return Ok();
}
以下类型的调用可以正常工作。
但有点像:
http://server/api/controller/SuperHugeReallyReallyLongInputString
导致400 Bad Request。
根据我的理解,这是因为我的输入参数可以有一个最大长度。我尝试通过以下方式增加其他Stack Overflow帖子,但它们都不起作用。
<httpRuntime targetFramework="4.5.2" maxRequestLength="4096"/> //in web.config
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
<!--50MB-->
</requestFiltering>
</security> //also in web.config
config.Formatters.FormUrlEncodedFormatter.ReadBufferSize = int.MaxValue / 10; //in WebApiConfig.cs
以上都不会对输入的最大长度产生任何影响。我错过了什么?
谢谢
答案 0 :(得分:0)
结束了有效的事情的绊脚石。
https://blogs.msdn.microsoft.com/amyd/2014/02/06/response-400-bad-request-on-long-url/
需要添加或更新以下注册表项:
HKLM:\系统\ CurrentControlSet \服务\ HTTP \参数\ UrlSegmentMaxLength
还需要做:
<httpRuntimetargetFramework="4.5" maxUrlLength="2083" maxQueryStringLength="2048" />
最后重启http服务。就像作者一样,我无法让它工作,所以我只是重新启动。