2017-02-15 1 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

그러나 같은 : 400 잘못된 요청에

http://server/api/controller/SuperHugeReallyReallyLongInputString

결과.

내 이해에서, 입력 된 인수가 가질 수있는 최대 길이가 있기 때문입니다. 나는 다른 스택 오버 플로우 게시물에서 발견되는 다음과 같은 방식으로 이것을 증가 시키려고 노력했지만 아직 그들 중 아무도 작동하지 않습니다.

<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 길이입니다. 최대 2,000 자 정도입니다. 요청 본문에 입력을 POST해야 할 수도 있습니다. – 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 서비스를 다시 시작합니다. 필자와 마찬가지로이 작업을 수행 할 수 없기 때문에 재부팅했습니다.

관련 문제