source

잘못된 요청 - Visual Studio 2013의 Asp.net WebAPI 프로젝트에서 잘못된 호스트 이름

factcode 2023. 5. 29. 11:13
반응형

잘못된 요청 - Visual Studio 2013의 Asp.net WebAPI 프로젝트에서 잘못된 호스트 이름

저는 매우 기본적인 웹을 운영하고 있습니다.Visual Studio Pro 2013의 API 프로젝트입니다.내 컴퓨터의 localhost에서 정상적으로 실행됩니다.그런 다음 다른 기계에서 브라우저로 이동하여 서버 ipaddress와 포트 번호를 입력하여 레일 앱을 가리키는 방법과 유사한 :57571로 이동합니다.그런 다음 잘못된 요청 - 잘못된 호스트 이름 HTTP 오류 400을 받습니다.요청 호스트 이름이 잘못되었습니다.

저는 또한 두 대의 윈도우 머신을 zure에 넣어 이것을 복제했습니다.하나의 실행 중인 비주얼 스튜디오 프로 2013.저는 같은 애플리케이션을 실행하고 있으며 로컬에서 잘 작동합니다.그런 다음 다른 VM(동일한 가상 네트워크에서 서버 VM을 ping할 수도 있음)에서 이를 가리켜도 Bad Request - Invalid Hostname HTTP Error 400이 계속 표시됩니다. 요청 호스트 이름이 잘못되었습니다.

나는 단지 IP 주소를 사용하여 다른 기계에서 이 앱을 실행할 수 있기를 원합니다.이것이 가능합니까?(만약 내가 무엇을 잘못하고 있는지에 대한 아이디어가 있다면?)이것이 제가 시도한 것입니다. 위해 일하지 않았습니다. 이것 또한 그것을 작동시키지 않았습니다.

비주얼 스튜디오가 관리자로 실행되고 있는지 어떻게 알 수 있습니까?

(Visual Studio가 실행 중인 Windows Server 2012 R2를 사용하고 있습니다.두 컴퓨터의 방화벽을 모두 해제했습니다.)

이것이 제가 작동하게 된 방법입니다.

C:\users\사용자 이름\으로 이동합니다.문서\Visual Studio 2013의 IIExpress\config\applicationhost.config

다음 행을 applicationhost.config made to work에 추가합니다.

<binding protocol="http" bindingInformation="*:53676:*" />

이것이 효과가 없었던 곳에서

<binding protocol="http" bindingInformation="<clientsIPaddress>:53676:*" />

Vs2015 업데이트와 application.config정확한 변경 위치가 아래에 요약되어 있습니다.

VS 2015의 파일 경로는 다음과 같습니다.

C:\Users\\{YourUsername}\Documents\Visual Studio 2015\Projects\\{ThisSolutionName}\\.vs\config\applicationhost.config 다니엘이 말한 것처럼

애플리케이션.config의 어디에 저장해야 합니까?

다음은 바인딩을 찾을 수 있는 XML 파일의 상위 섹션입니다.

 <system.applicationHost>
           <sites>
              <site name="WebSite1" id="1" serverAutoStart="true">
                 <bindings>
                      <binding protocol="http" bindingInformation=":8080:localhost" />
               </bindings>
           </site>
      </sites>
 </system.applicationHost>

이것applicationhost.config에서 아무것도 변경하지 않은 새 프로젝트에 대한 대략 161행이었습니다.

제가 깨닫지 못한 것은 고객의 IP 주소가 사실이 아니라고 생각했다는 것입니다.이유는 Azure에서 VNet-VNet에 연결되어 있었는데 두 IP 주소를 연결하는 게이트웨이가 애플리케이션이 실행 중인 네트워크에서 클라이언트 IP 주소를 재할당하기 때문입니다.따라서 저는 그것이 매핑된 새로운 IP 주소를 찾아야만 했습니다.*:port:*

나는 논평할 수 없지만, @EthanKeiser에 대답하고 싶었습니다.

Visual Studio 2015에는 승인된 답변에 따라 업데이트해야 하는 각 솔루션에 대한 별도의 구성 파일이 있습니다.이 파일은 다음 위치에 있습니다.

C:\Users\\{UserName}\Documents\Visual Studio 2015\Projects\\{SolutionName}\\.vs\config\applicationhost.config

한 시간 동안 동일한 문제가 있었고, 여기서 모든 것을 시도했고 이 문제와 관련이 있었지만, Visual Studio를 관리자로 실행한 것이 문제를 해결했습니다.그렇지 않으면 난 계속 받을 것입니다.Unable to connect to web server 'IIS Express'당신을 잘못된 길로 이끄는 오류.

제게 도움이 된 또 다른 것은 추가하는 것입니다.127.0.0.1철장에

는 ㅠㅠㅠㅠㅠㅠㅠapplicationhost.config다음과 같이 표시됩니다.

<bindings>
  <binding protocol="http"  bindingInformation="*:28066:" />
  <binding protocol="http"  bindingInformation="*:28066:localhost" />
  <binding protocol="http"  bindingInformation="*:28066:127.0.0.1" />
  <binding protocol="http"  bindingInformation="*:28066:sitename.com" />

  <binding protocol="https" bindingInformation="*:44302:" />
  <binding protocol="https" bindingInformation="*:44302:localhost" />
  <binding protocol="https" bindingInformation="*:44302:127.0.0.1" />
  <binding protocol="https" bindingInformation="*:44302:sitename.com" />
</bindings>

그리고.hosts파일은 다음과 같습니다.

127.0.0.1   localhost
127.0.0.1   sitename.com

를 추가하기 127.0.0.1브라우저에서 다음과 같이 탐색하는 것은 괜찮았습니다.https://localhost:44302,그렇지만https://sitename.com:44302결과적으로Bad Request.

또한 '핫 교체'를 수행하는 경우 IIS를 재설정하고 있는지 확인합니다. 오른쪽 버튼으로 하고 Visual Studio를 선택하면 됩니다.Unload project 다에음그에를 변경합니다.applicationhost.config 장하고저,Reload projectVS에서

프로젝트에 대한 SSL 인증서를 생성하는 것을 잊지 마십시오.Visual Studio가 그렇게 해줄 수 있을지 모르겠습니다.

포트 범위는 44300에서 44399 사이여야 합니다.

SSL을 생성하는 방법은 다음과 같습니다.

  1. 관리자 권한으로 Visual Studio 개발자 도구 열기
  2. makecert -r -pe -n CN="dev.helpme.transwestern.com" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
  3. netsh http show sslcert ipport=0.0.0.0:44302 (이 단계부터 확인해야 합니다.)
  4. netsh http delete sslcert ipport=0.0.0.0:44302

이제 "컴퓨터 인증서 관리"를 열고 개인으로 이동한 후 새로 작성된 항목을 선택합니다."상세 정보/지문"이 필요합니다.

  1. netsh http add sslcert ipport=0.0.0.0:44302 certhash=<thumbprint> appid={id from step 3}(브라켓 포함 {})

도움이 되길 바랍니다.

VS2019 및 2022의 경우 대신 이 폴더에서 애플리케이션 host.config를 찾을 수 있습니다.형식은 위의 답변과 동일한 것 같습니다. ${projectRoot}/.vs/config/applicationhost.config.

언급URL : https://stackoverflow.com/questions/28699538/bad-request-invalid-hostname-with-asp-net-webapi-project-in-visual-studio-2013

반응형