sourcecode

VS 디버그 모드 중에 ip:port를 사용하여 WEB API에 액세스할 수 없지만 localhost:port를 사용하여 액세스할 수 있습니다.

copyscript 2023. 8. 17. 21:45
반응형

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를 다시 시작해야 합니다.

안톤과 매튜의 대답은 모두 나를 올바른 방향으로 가리켰습니다.

그래서 제가 한 일은

  1. 관리자 모드에서 Visual Studios 실행

  2. 제안된 대로 바인딩 프로토콜을 변경하고 들어오는 방향을 허용했습니다. http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

    하지만 그 후 서비스 사용 불가(503) 오류가 발생합니다.

  3. 그래서 저는 이것을 따랐습니다: 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

반응형