VS2012에서 개발 된 테스트 ASP.NET MVC3 응용 프로그램이 있습니다. 디버깅을 시작할 때 .NET에 대한 요청을 통해 호스트 컴퓨터에서 앱에 액세스합니다 http://localhost:<portnumber>
. 하지만 난을 통해 인트라넷에 원격 컴퓨터에서 동일한 응용 프로그램에 액세스하려고하면 http://<ip>:<portnumber>
내가 얻을 HTTP error 400: Bad request. Invalid Host Name.
이 모든 서버 구성에 액세스 할 수없는 IIS 익스프레스에서 실행 마찬가지로 지금까지.
이 문제를 해결할 수있는 방법이 있습니까?
답변
최신 정보
프로세스를 더 잘 설명하는 비디오를 만들었습니다. https://youtu.be/5ZqDuvTqQVs
Visual Studio 2013 이상을 사용하는 경우이 작업을 수행하려면 관리자로 실행해야합니다.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(VS2015에서는 $(solutionDir)\.vs\config\applicationhost.config
) 파일을
엽니 다 . 내부에는 다음과 같은 내용이 표시되어야합니다.
<site name="WebSite1" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
</bindings>
</site>
변경 bindingInformation=":8080:localhost"
에 bindingInformation="*:8080:*"
(다른 것, 내 경우에는 포트 번호, 8080).
참고 : 작동하지 않는 경우 bindingInformation="*:8080:
별표를 제거 할 수 있습니다.
그런 다음 방화벽이 해당 포트에서 들어오는 연결을 허용하는지 확인하십시오. IISExpress에서 구성 파일을 다시로드하려면 시스템 또는 최소한 Visual Studio를 다시 시작해야 할 수 있습니다.
이것이 작동하지 않으면 https://stackoverflow.com/a/5186680/985284 답변을 살펴보십시오.
답변
VisualStudio 2015 비 관리자
-
솔루션 디렉토리에서 파일
.vs\config\applicationHost.config
에서 줄을 변경하십시오.<binding protocol="http" bindingInformation="*:44302:localhost" />
…에
<binding protocol="http" bindingInformation=":44302:" />
(44302는 포트)
-
관리자 명령 프롬프트에서 :
나는. 관리자가 아닌 사용자가 포트에 바인딩하도록 설정
netsh http add urlacl url=http://*:44302/ user=Everyone
ii. 방화벽을 통해 허용
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
- VisualStudio에서 디버깅 시작
답변
iisexpress 구성 파일을 수정하는 경우를 제외하고 때로는 아래와 같은 명령을 실행해야합니다.
netsh http add urlacl url = http : // * : 49419 / user = Everyone
답변
Visual Studio를 관리자로 실행하지 않는 방법
Garret 과 @shangkeyun의 대답 을 모두 사용하면 Visual Studio를 관리자로 실행할 필요없이 실행중인 웹 사이트에 연결할 수 있습니다.
- 열다
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
- 다음을 사용하여 사이트 검색
name=MySiteName
- 섹션 의 기존
<binding>
항목을 복제<bindings>
하십시오. 이제binding
. - bindingInformation에서 “localhost”부분을 제거하십시오.
-
이제 포트가 다음과 같다고 가정하면 다음과 같이 표시됩니다
12345
.<binding protocol="http" bindingInformation="*:12345:localhost" /> <binding protocol="http" bindingInformation="*:12345:" />
-
관리자가 아닌 사용자가 포트에 바인딩하도록 설정
netsh http add urlacl url=http://*:12345/ user=Everyone
2019 편집 : gregmac은 VS 인스턴스를 화이트리스트에 추가하는 단계를 추가했습니다. 나는 이것이 필요하지 않았지만 어쨌든 그것을 나열합니다.
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
답변
@Garret Fogerlie의 게시물에 댓글을 추가 할 수없고 댓글 작성자의 문제 (@ Y.Ecarri 및 @SamuelEdwinWard)에 대한 응답으로 Garret이 제안한대로 Visual Studio 2013을 사용하여 관리자 모드에서 실행하고 application.config
파일.
디버그를 시작하고 동일한 오류 메시지가 표시되는 것을 확인한 후 다시 들어가서 application.config
Y.Ecarri의 문제처럼 내 사이트에 대한 새 항목이 생성되었음을 확인했습니다.
그래서 디버깅을 중지 하고 Visual Studio에서 내 솔루션을 열어application.config
두고 새 항목에 대해 파일을 다시 편집했습니다 . 나는 또한 단순히 *
노래를 localhost
완전히 제거 했기 때문에 새 항목에 대해 다음과 같이했습니다.
<binding protocol="https" bindingInformation=":44300:" />
답변
일부는 % USERPROFILE % 디렉토리를 사용하여 수정하고 테스트하는 데 많은 시간을 할애 할 수 있습니다. VS debug 에서 실행중인 경우 $ (solutionDir) .vs \ config \ applicationhost.config를 사용하십시오.
답변
byteit 덕분에 :
Documents / IISExpress / config에서 applicationhost.config로 이동합니다.
작업중인 특정 사이트에 대한 항목을 찾으십시오.
더하다:
<binding protocol="http" bindingInformation="*:<your site port>:*" />
기존의
<binding protocol="http" bindingInformation="*:<your site port>:localhost" />
VS2013을 사용하지 않고 솔루션을 얻으려면 다시 시작할 때 새 웹 사이트 xml 항목을 만듭니다. 관리자로 실행해야합니다.