2017-02-15 9 views
0

Я пытаюсь заставить свой WEB API принимать длинные строки запроса, но независимо от того, что я пытаюсь, я получаю 400 Bad Request. Мой метод доступен через:Как увеличить длину параметра в 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 Bad Request.

С моей точки зрения, это потому, что существует максимальная длина, которую может иметь мой входной аргумент. Я попытался увеличить это следующим образом, найденным в других сообщениях переполнения стека, но никто из них не работает.

<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

Проблема не в максимально допустимой длине содержимого. Это длина URL-адреса. Максимальное значение составляет около 2000 символов. Возможно, вам понадобится POST ваш вход в тело запроса. – Nkosi

+0

Спасибо. Я пытался построить быстрое доказательство концепции для чего-то и надеялся, что смогу сделать это, вместо того, чтобы сражаться с CORS. – Dave

ответ

0

Законченное наткнуться то, что работал.

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

нужно добавить или обновить следующий раздел реестра:

HKLM: \ System \ CurrentControlSet \ Services \ HTTP \ Parameters \ UrlSegmentMaxLength

Также еще нужно сделать :

<httpRuntimetargetFramework="4.5" maxUrlLength="2083" maxQueryStringLength="2048" /> 

Вновь перезапустите службу http. Как и автор, я не мог заставить это работать, поэтому я просто перезагрузился.