2017-02-15 18 views
0

我试图让我的WEB API接受长请求字符串,但无论我尝试什么,我最终都会收到400错误请求。我的方法是通过访问:如何增加WEB API中的参数长度

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错误的请求。

从我的理解,这是因为我的输入参数可以有一个最大长度。我试图用其他堆栈溢出文章中找到的以下方式增加它,但它们都不起作用。

<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

问题不是允许的最大内容长度。这是网址的长度。最大可达200​​0个字符。您可能需要在请求正文中张贴您的输入。 – Nkosi

+0

谢谢。我试图为某些东西建立一个快速的概念验证,并希望我可以做到这一点,而不是与CORS战斗。 – Dave

回答

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服务。就像作者一样,我无法得到这个工作,所以我只是重新启动。