programing

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

sourcejob 2023. 6. 13. 22:14
반응형

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

asp 애플리케이션이 로컬에서 실행되고 있는지 확인할 수 있는 권장 방법이 있는지 알고 싶습니다.현재는 Request 개체를 사용하여 서버 변수에 대해 localhost 또는 127.0.0.1 문자열 검색을 수행하지만 몇 가지 제한이 있습니다.가장 큰 점은 요청 개체가 항상 필요할 때 사용할 수 있는 것은 아니라는 것입니다.

HttpRequest를 참조하십시오.로컬임

bool isLocal = HttpContext.Current.Request.IsLocal;

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

이것은 Application_Start를 사용하는 데 도움이 되었습니다.

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

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

ASP.NET에서 호스팅 환경의 값을 결정하는 항목입니다.개발 환경은?

이 스레드의 다른 답변에 대한 @Meh Men의 논평에 대해, 누가 다음과 같이 물었습니다.

요청이 null인 경우(예: Application_start)는 어떻게 됩니까?

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

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

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

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

bool isLocal = HttpContext.Current.Request.IsLocal;

MVC 컨트롤러의 경우:

bool isLocal = Request.IsLocal;

HttpContext인 경우.현재 사용이 null이 아닙니다.

HttpContext.Current.Request.IsLocal

그렇지 않은 경우(예: App_Start 또는 HttpContext 이전).전류를 사용할 수 있습니다. 테스트할 수 있습니다.

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

또는 PC의 전용 디스크입니다.

다른 방법으로는 프로덕션에서 상수 컴파일 변수 집합을 사용할 수 있습니다. 예를 들어, Azure 및 visualstudio.com 에서 변수 집합을 사용할 수 있습니다.

그것은 더럽지만 효과가 있습니다.

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

ASP.NET 환경에서는 항상 요청을 사용할 수 없습니다.

HttpContext 및 속성 요청/응답은 서버가 페이지 처리를 시작하는 즉시 초기화됩니다.따라서 페이지 수명 주기에서 c# 코드를 실행할 수 있는 모든 위치에서 요청 URL을 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/691881/determine-if-asp-net-application-is-running-locally

반응형