如何在WEB API

时间:2017-02-15 23:13:32

标签: c# asp.net-web-api

我正在尝试让我的WEB API接受长请求字符串,但无论我尝试什么,我最终得到400 Bad Request。我的方法可以通过以下方式访问:

  

http://server/api/controller/method/ {输入}

代码是

[HttpGet]
public IHttpActionResult method(string input) {
   //Do Stuff
   return Ok();
}

以下类型的调用可以正常工作。

  

http://server/api/controller/ShortInputString

但有点像:

  

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 

以上都不会对输入的最大长度产生任何影响。我错过了什么?

谢谢

1 个答案:

答案 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服务。就像作者一样,我无法让它工作,所以我只是重新启动。