2017-02-15 20 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服務。就像作者一樣,我無法得到這個工作,所以我只是重新啓動。