이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 20667|회답: 0

[ASP.NET] GET 요청 "HTTP Error 400. 요청 URL이 유효하지 않습니다."

[링크 복사]
게시됨 2018. 7. 4. 오전 9:53:58 | | | |


이런 잘못된 정보를 보면, 일반 개발자는 두 가지 이유를 짐작할 수 있습니다

1. 링크에 특수 문자가 포함되어 있습니다

2. 링크 길이가 너무 깁니다(길이가 원인이 아닌 것 같아요, 모호해서 잊었네요)

오류 이미지의 주소는 다음과 같습니다: http://{host}/SearchService. svc/rest/pic600x320/png/kv3hcxmnCmISVvFKojNBGpkN44MRx71vV4v7Qu7ikclbic2vX5Axnm8RxwhLoWyehsSz4J%C2% A72F6h4eQgvkrbzuKGR6y7sszK1KUY75RqxylZMumapwVQttfllaSPXwoRGEeVexDqjmMZSERPquL3uLZbv6Vxdx52nRDUW90SVVYeqkHZbx2w3T1coqt2v036tfaZ%C2%A72D8GBlPbIVJuhSFU5GA8116z8FkV4%C2% A72kDtsxSXy9XTFIziTToRpbQEkp7497O6q99

다음으로, 우리는 발생할 수 있는 오류의 원인을 조사하기 시작했습니다

1. URL을 확인, 특수 문자가 없음(이 이유는 제외)

2. URL이 처음 보면 매우 길어 보이므로, 매개변수 길이의 절반을 삭제한 후 요청합니다. 결과적으로 성공할 수 있으며, 계속해서 문자를 추가하면 길이가 339를 초과하는 것을 발견하고 이 오류를 보고하며, 339 이후에는 특수 문자가 없습니다.결국 오류의 원인은 URL이 너무 길다는 점이라고 판단했습니다

다음 단계는 관련 문제를 해결하는 것입니다

그리고 여러 Baidu가 있는데, 쿼리 문자열 길이 제한 수정과 관련된 구성을 확인하세요

그 다음 web.config를 수정하세요

1. httpRuntime 노드 아래의 maxQueryStringLength 및 maxRequestLength 구성을 수정합니다

2. system.webServer 노드를 다음과 같이 수정합니다

저장하고 실행할 때도 오류는 같고, 소용없어 보입니다

이때 저는 왜 안 되겠냐고 생각하기 시작했습니다. 저처럼 많은 사람들이 있을 수도 있고, IIS의 글로벌 설정을 생각하면 이 설정이 무효화되지 않을까, 우리는 여전히 모든 세트 값을 사용합니다

추측하지 말고 그냥 확인해 보세요 (확인하시는 requestFiltering은 system.webServer 아래에 있으니 잘못된 노드를 마세요)

만약 꺼져 있다면, overrideModeDefault 값은 부정(Deny)이며, 이는 저희 사이트의 특정 설정에 따라 구성이 이루어진다는 뜻입니다.

그럼 모든 게 정상인데, 왜 오류가 있는 거죠?!

마지막으로, stackoverflow에서 채택되지 않은 리버트가 제 관심을 끌었습니다

링크https://stackoverflow.com/questi ... is-invalid-in-iis-7



대략적으로 요청은 아직 IIS에 도달하지 않았고 운영체제에 의해 종료됩니다.

이때 저는 구글에서 마이크로소프트의 광 무선 기술 지원에 연결된 다른 기사를 검색했습니다

주소는 다음과 같습니다https://support.microsoft.com/zh ... ettings-for-windows

두 문서의 핵심은 레지스트리를 수정해야 한다는 것이며, 두 조항은 아마도 다음 두 가지 레지스트리의 값에 의해 수정될 것입니다



다음으로 시도해 보고 레지스트리 CMD="regedit="HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters로 가세요

빈 영역을 우클릭하여 사진에 보이는 대로 Dword 값을 선택하세요



UrlSegmentMaxLength라는 새 이름을 만들고 값을 2048로 설정한 후 확인(OK)을 클릭하세요



UrlSegmentMaxCount의 설정은 위와 동일하며, 값도 Dword 2048입니다. 확인 버튼을 클릭하세요.

이 수정은 HTTP 서비스가 재시작될 때만 적용될 수 있습니다

  • Start를 클릭하고 Cmd를 입력한 후 확인을 누르세요.
  • 명령 프롬프트에서 net stop http를 입력하고 Enter 키를 누르세요.
  • 명령 프롬프트에서 net start http를 입력하고 Enter를 누르세요.


그 다음 IIS를 다시 시작하세요. 다시 시도해보세요, 알겠습니다, 오류 없고 완벽한 해결책입니다





이전의:"Object" 타입은 참조되지 않은 어셈블리에서 정의됩니다. 프로그램에 응답을 추가해야 해...
다음:Ionic Development 안드로이드 앱 실습 (4): 바이두 지도 API 위치 지정
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com