VS 디버그 모드 중에 ip:port를 사용하여 WEB API에 액세스할 수 없지만 localhost:port를 사용하여 액세스할 수 있습니다.
.net에서 WEB API를 작성하고 Android Application에서 sql 서버 데이터베이스의 일부 데이터를 쿼리하려고 합니다.
웹 API를 작성해 두었는데 디버그 모드에서 잘 작동합니다.
제 질문은 그 애플리케이션의 URL이localhost:port
그리고 그것은 잘 작동합니다.하지만, 내가 그것을 바꾸려고 할 때.MYIP:port (eg. http:192.168.X.1234)
또는MYHOSTNAME:port (eg win7home:1234)
이것은 나를 줍니다.Bad Request - Invalid Hostname
.
IIS에 배포할 수 있고 IIS가 설정되어 있지만 디버그 모드에서 작동하지 않는 이유가 궁금합니다.
변경할 때마다 배포하지 않고 디버그 모드에서 실행하고 안드로이드에서 동시에 테스트할 수 있는 방법이 있습니까?
디버깅 모드에서 실행하는 경우 IIS-Express를 사용하는 것으로 가정합니다.
기본적으로 IIS-Express는localhost
.
이 문제를 피하기 위해 다음 위치에 있는 IIS-Express 응용 프로그램 구성 파일을 열 수 있습니다.C:\Users\<username>\My Documents\IISExpress\config\applicationhost.config
사이트의 바인딩 정보를 수정합니다.
바꾸다
<binding protocol="http" bindingInformation="*:55284:localhost" />
로.
<binding protocol="http" bindingInformation="*:55284:*" />
또한 변경 후 IIS-Express를 다시 시작해야 합니다.
안톤과 매튜의 대답은 모두 나를 올바른 방향으로 가리켰습니다.
그래서 제가 한 일은
관리자 모드에서 Visual Studios 실행
제안된 대로 바인딩 프로토콜을 변경하고 들어오는 방향을 허용했습니다. http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer
하지만 그 후 서비스 사용 불가(503) 오류가 발생합니다.
그래서 저는 이것을 따랐습니다: IIS Express Enable External Request - 503 port protocol과 port:ip protocol만 추가했습니다.
그것은 내 컴퓨터의 브라우저와 내 핸드폰 모두에서 작동합니다.
세 번째 단계가 필요한 이유는 그다지 확실하지 않습니다. 제 가설은 (VS가 가리키는 localhost url은 필요하고 ip url은 다른 시스템에서 액세스하는 데 사용됩니다.)
로컬 호스트 IIS를 공유하여 일부 사용자가 내 컴퓨터 이름이나 IP를 입력하고 웹 앱 인스턴스에 연결하기를 원할 때도 동일한 문제가 있었습니다.http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer 에서 이것이 필요한 것이라면,Silverlight 앱과 MVC 앱 모두에서 작동합니다.저는 브레이크 포인트를 설정하기도 했는데, 그것들은 원격 기계에서 적중되었습니다.
솔루션 dir에서 .vs\config\applicationHost.config 파일에서 행을 변경합니다.
<binding protocol="http" bindingInformation="*:1234:localhost" />
로.
<binding protocol="http" bindingInformation=":1234:192.168.1.35" />
Visual Studio를 관리자로 실행합니다.IIS Express를 다시 시작합니다.이 해결책은 저에게 효과가 있습니다.
저는 이것을 오랫동안 찾았고 마침내 앱을 콘솔로 디버그하는 사람들을 위한 해결책을 찾았습니다(출시: 프로젝트).
Program.cs 클래스에서 UseUrls()를 추가해야 합니다.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseUrls("http://0.0.0.0:5000", "https://0.0.0.0:5001")
.UseStartup<Startup>();
});
저는 이것을 온라인에서 어디에서도 찾을 수 없었지만, 제가 가지고 있던 오래된 프로젝트에서 찾았습니다.
Visual Studio Code에서 디버깅과 동일한 문제가 발생한 경우 다음을 추가하여 해결했습니다.
"env": {
// ...
"ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
// ...
},
.json을 시작합니다.
기본적으로 http 프로토콜을 'localhost:5000'으로 바인딩하므로 localhost에서는 작동하지만 ip 주소에서는 작동하지 않습니다.
다른 컴퓨터에서 오는 요청으로 중단점에 도달하려는 경우 방화벽 설정 및/또는 바이러스 백신을 확인하는 것을 잊지 마십시오.
이것이 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/19554996/cant-access-web-api-with-ipport-but-can-with-localhostport-during-vs-debug-mo
'sourcecode' 카테고리의 다른 글
nodejs에서 MariaDB 준비 문 쿼리를 사용하는 방법은 무엇입니까? (0) | 2023.08.17 |
---|---|
github에 커밋을 푸시할 때 git가 실패함 (0) | 2023.08.17 |
Visual Studio용 PowerShell 구문 강조 표시 또는 IntelliSense 플러그인을 찾은 사람? (0) | 2023.08.12 |
sql에서 값을 동적으로 변경하려고 합니다. (0) | 2023.08.12 |
Git Stash 팝업 삭제 (0) | 2023.08.12 |