2017-02-15 1 views
0

나는 asp.net 핵심 웹 API를 가지고 있는데, 이것은 tts 요청을 가능하게합니다. 당신은 기본적으로 http://server.url/Whatever you want it to say.mp3에게 tts에서 말한 텍스트가있는 mp3를 요청합니다.asp.net 코어의 최대 URL 길이를 늘리십시오.

그러나 문제는 긴 문자열을 전달하면 400 - The request URL is invalid을 반환한다는 것입니다. 서버가 일종의 최대 URL 길이 제한을 초과하는 것처럼 보입니다. 이 문제를 해결하는 방법에 대한 정보는 "클래식"asp.net web.config이지만 asp.net 코어에서이 문제를 해결하는 방법은 찾을 수 없습니다.

asp.net 코어의 최대 URL 길이를 늘리는 올바른 방법은 무엇입니까?

업데이트 :

한 URL은 예를 들면 다음과 같습니다

http://localhost:5000/api/mp3/nl-NL/male/1/Wikipedia%20is%20een%20online%20encyclopedie%20die%20tracht%20inhoud%20te%20bieden%20die%20vrij%20herbruikbaar,%20objectief%20en%20verifieerbaar%20is.%20Het%20project%20is%20gebouwd%20op%20vijf%20zuilen.%20De%20Nederlandstalige%20versie%20startte%20op%2019%20juni%202001%20en%20is,%20gemeten%20naar%20het%20aantal%20artikelen,%20met%20bijna%201,9%20miljoen%20artikelen%20de%20op%20vier%20na%20grootste%20taalversie.mp3

그것은 URL 인코딩입니다. 나는 정확한 최대치가 무엇인지 알아 내려고 노력할 것이다.

POST를 사용할 수 없습니다.이 도구는 mp3 파일 (따라서 내 컨트롤러에서 사용되는 .mp3 확장자)에 대한 URL 만 지원하기 때문에 사용할 수 없습니다.

업데이트 2

는 397 개 문자, 매우 논리적하지 않는 것이 받아 가장 긴 요청. 내가 하나 더 추가하면 로컬로 실행하면 400

가 업데이트 3

그것은 판명는 서버 (사용하여 IIS)에 배치 된이 문제를 가지고,이 방법을 지원하는 코드를 반환합니다 긴 문자열 (나는 아직 코드 400을 반환하지 않았다). IIS가 어디에 잘못 될지 알아봐야 할 것입니다. 그것이 나오는 것에 따라

+0

정확한 URL은 무엇입니까? – koelkastfilosoof

+0

GET 대신 POST를 사용할 수 있습니다. – juunas

+0

얼마나 크지 (mancy characters)? url_encoding url을 시도 했습니까 (공백 =>'% 20' 또는'+')? –

답변

2

, 나는이 문제를 해결하려면 두 가지가 필요 :

나는 더 이상 URL을 허용하도록 IIS를 지시 할의 web.config에 다음을 추가 할 필요

변경의 Web.config : 이 후

<system.webServer> 
    <security> 
     <requestFiltering allowDoubleEscaping="false"> 
      <requestLimits maxAllowedContentLength="30000000" maxUrl="40960" maxQueryString="20480" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 

편집 레지스트리

, IIS 것이다 UrlSegment 길이가 너무 길기 때문에 여전히 코드 400이 발생합니다. 슬프게도, 이것을 바꾸는 유일한 방법은 약간의 레지스트리 해킹입니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters으로 이동하고 키 UrlSegmentMaxLength를 찾으십시오. 존재하지 않으면 값 유형이 REG_DWORD 인 계정을 만듭니다. 나는 1000 HEX (4096 DEC)를 값으로 사용했다. 키가 아직 없으면 기본값은 260입니다.

변경 사항이 적용되기 전에 서버를 재부팅해야했습니다.