http 컨텍스트를 사용하지 않고 응용 프로그램 경로를 가져옵니다.(asp.net )
어떻게 하는 거지?
사용 안 함:
HttpContext.Current.Server.MapPath
제가 http 컨텍스트를 필요로 하지 않고 통화할 수 있는 비슷한 기능이 기능이 있나요?
예를 들어 스레드가 어떤 작업을 시작하면 http 컨텍스트를 사용할 수 없지만 앱 경로를 가져와야 합니다.그리고 아니요, 컨텍스트를 인수로 전달하거나 공유 변수에서 읽을 수 없습니다.
속성을 사용합니다.
몇 가지 옵션이 있습니다.
WebApplication -> Web root folder
UnitTest -> ArgumentNullException
ConsoleApplication -> ArgumentNullException
WebApplication -> Web root folder
UnitTest -> ...\AppDir\bin\Debug
ConsoleApplication -> ...\AppDir\bin\Debug
WebApplication -> Web root folder
UnitTest -> null
ConsoleApplication -> null
AppDomain을 사용하는 것을 추천합니다.현재 도메인.모든 유형의 프로젝트에서 사용할 수 있고 설정할 수 있기 때문에 기본 디렉토리입니다.
예를 들어 웹 루트 폴더를 AppDomain으로 가리키도록 UnitTest BaseDirectory를 설정할 수 있습니다.현재 도메인.명령별 기본 디렉터리:
AppDomain.CurrentDomain.SetData("APPBASE", "path to your web root");
일부 전자 메일 알림에서 제공할 URL(웹 응용 프로그램의 영구 링크)을 계산하는 방법을 찾을 때 이 질문을 우연히 발견했습니다.
이것들은 다른 스레드에서 생성되었습니다.HttpContext
사용할 수 없었고 이메일을 생성하는 데 사용되는 큐 테이블에 URL 관련 정보를 넣는 것을 피하고 싶었습니다.
코드:
public static String GetCurrentAppDomainBasePath(String prefix = "http://")
{
return String.Format("{0}{1}{2}",
prefix,
System.Net.Dns.GetHostEntry("").HostName,
System.Web.HttpRuntime.AppDomainAppVirtualPath
);
}
함수는 다음과 같은 전체 가상 경로를 반환합니다.http://full-host-name/AppName
물론 몇 가지 제한 사항이 있습니다. 하드코딩 프로토콜(http
https 등) 및 사용hostname
대신에domain name
(단일 컴퓨터에 여러 도메인이 정의된 경우에만 적용됨).
언급URL : https://stackoverflow.com/questions/2409540/get-application-path-without-using-httpcontext-asp-net
'source' 카테고리의 다른 글
CSS를 사용하여 입력에 텍스트가 있는지 탐지합니다. -- 내가 방문 중이고 제어하지 않는 페이지에서? (0) | 2023.09.01 |
---|---|
Visual Studio Code 내에서 Git 사용자 변경 (0) | 2023.09.01 |
조인된 테이블의 행을 기본 쿼리의 필드 이름 및 값으로 지정하시겠습니까? (0) | 2023.09.01 |
CCU가 최대 500개인 애플리케이션에 대해 이 판독값이 괜찮습니까? (0) | 2023.09.01 |
mysql-native 드라이버를 사용하여 DB에 연결한 후 예외 발생 (0) | 2023.09.01 |