[.net] ASP.NET 응용 프로그램이 로컬에서 실행 중인지 확인

ASP 응용 프로그램이 로컬에서 실행 중인지 확인하는 권장 방법이 있는지 알고 싶습니다. 현재 Request 개체를 사용하고 서버 변수에서 localhost 또는 127.0.0.1에 대한 문자열 검색을 수행하지만 몇 가지 제한 사항이 있습니다. 가장 큰 것은 Request 객체가 필요할 때 항상 사용할 수있는 것은 아니라는 것입니다.



답변

HttpRequest.IsLocal을 참조하십시오.

bool isLocal = HttpContext.Current.Request.IsLocal;


답변

Request.IsLocal 속성을 확인할 수 있습니다.


답변

이것은 Application_Start와 함께 저에게 효과적이었습니다.

if (!HostingEnvironment.IsDevelopmentEnvironment)
{
      GlobalFilters.Filters.Add(new RequireHttpsAttribute());
}

IsDevelopmentEnvironment가 설정되는 방법에 대한 자세한 내용은 다음 스레드를 참조하십시오.

ASP.NET에서 HostingEnvironment.IsDevelopmentEnvironment의 값을 결정하는 것은 무엇입니까?


답변

MVC보기 / ASP 페이지 / 클래스 뒤의 코드에서 :

bool isLocal = HttpContext.Current.Request.IsLocal;

MVC 컨트롤러에서 :

bool isLocal = Request.IsLocal;


답변

Request.IsLocal은 127.0.0.1 또는 :: 1을 확인하는 것과 동일합니다. 이 게시물을 참조하십시오 : http://forums.asp.net/p/1065813/4081335.aspx .


답변

HttpContext.Current가 null이 아닌 경우 사용

HttpContext.Current.Request.IsLocal

그렇지 않으면 예를 들어 App_Start에서 또는 HttpContext.Current를 사용할 수 있기 전에 테스트 할 수 있습니다.

HostingEnvironment.ApplicationPhysicalPath.StartsWith(@"C:\")

또는 PC의 전용 디스크.

또 다른 방법은 프로덕션에서 설정된 상수 컴파일 변수를 사용하는 것입니다 (예 : Azure 및 visualstudio.com에서 사용하는 경우).

더럽지 만 작동합니다.


답변

이 스레드의 다른 답변에 대한 @Meh Men의 의견에 대한 응답으로, 누가 질문했습니다.

Request가 null 인 경우는 어떻습니까? 즉 : Application_start?

웹 사이트의 프로덕션 및 테스트 또는 “동종”버전이 모두 웹 사이트의 릴리스 버전과 함께 배포되고 로컬 환경이 “디버그”모드에서 빌드 및 개발 될 것이라고 확신하는 경우 #if DEBUG신택스를 사용하여 다음을 수행 할 수 있습니다. 로컬로만 실행되어야하는 코드를 작성하고,이 블록 외부 또는 일치하는 #else블록 내부에서도 로컬이 아닌 경우에만 실행하려는 다른 코드를 작성할 수 있습니다 (예 : 원격).

다음은 현재 작업중인 특정 프로젝트에서이 문제를 해결 한 방법에 대한 작은 샘플입니다.

#if DEBUG
    // Code here will only be run locally.
#else
    // Code here will only be run "remotely".