찾다

 >  Q&A  >  본문

ASP.NET MVC에서 클라이언트의 IP 주소를 얻는 방법은 무엇입니까?

저는 ASP.NET MVC 스택을 처음 접했고 간단한 Page 개체와 Request ServerVariables 개체에 어떤 일이 일어나고 있는지 알고 싶습니다.

기본적으로 클라이언트 PC의 IP 주소를 추출하고 싶은데, 현재 MVC 구조가 이것을 어떻게 바꾸는지 이해할 수 없습니다.

내가 아는 한 대부분의 변수 개체는 HttpRequest 변형으로 대체되었습니다.

자료를 공유하고 싶은 사람이 있나요? ASP.NET MVC 세계에는 배울 것이 정말 많습니다. :)

예를 들어 현재 함수가 포함된 정적 클래스가 있습니다. ASP.NET MVC를 사용하여 동일한 결과를 얻으려면 어떻게 해야 합니까?

으아아아

컨트롤러 페이지에서 이 기능을 어떻게 호출하나요?

P粉232409069P粉232409069409일 전695

모든 응답(2)나는 대답할 것이다

  • P粉826283529

    P粉8262835292023-10-15 00:43:26

    Request.ServerVariables["REMOTE_ADDR"] 뷰 또는 컨트롤러 작업 메서드 본문에서 직접 작동해야 합니다(요청은 페이지가 아닌 MVC의 컨트롤러 클래스 속성입니다).

    작동합니다..하지만 가상 IIS가 아닌 실제 IIS에 게시해야 합니다.

    회신하다
    0
  • P粉903969231

    P粉9039692312023-10-15 00:08:01

    간단한 대답은 HttpRequest.UserHostAddress 속성 을 사용하는 것입니다.

    예: 컨트롤러 내부에서:

    으아악

    예: 도우미 클래스에서:

    으아악

    그러나 요청이 하나 이상의 프록시 서버에서 전송된 경우 HttpRequest.UserHostAddress 에서 반환된 IP 주소 속성은 요청을 중계한 마지막 프록시 서버의 IP 주소가 됩니다.

    프록시 서버 는 클라이언트의 IP 주소를 X-Forwarded-For HTTP 헤더에 배치하여 사실상 표준을 사용할 수 있습니다. 요청에 X-Forwarded-For 헤더가 있다는 보장이 없을 뿐만 아니라 X-Forwarded-For가 스푸핑되지 않았다는 보장도 없습니다.


    원래 답변

    으아악

    위 코드는 컬렉션을 조회할 필요 없이 클라이언트의 IP 주소를 제공합니다. Request 속성은 컨트롤러(또는 뷰)에서 사용할 수 있습니다. 따라서 Page 클래스를 함수에 전달하는 대신 Request 객체를 전달하여 동일한 결과를 얻을 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다