문제

C# 클래스 라이브러리 클래스에서 Server.mappath 메소드를 사용하려면 ASP.NET 웹 사이트의 비즈니스 레이어 역할을하는 방법

도움이 되었습니까?

해결책

그것을 호출하여?

var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");

System.Web Assembly에 대한 참조를 추가하십시오.

다른 팁

다음 코드를 사용하여 기본 경로를 얻을 수 있으며 필요한 경로를 추가 할 수 있습니다.

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

System.Web 및 전화를 참조해야합니다.

  HttpContext.Current.Server.MapPath(...)

어쩌면 이것을 종속성으로 추상화하고 ivirtualpathresolver를 만들 수 있습니다. 이렇게하면 서비스 클래스가 System.Web에 바인딩되지 않으며 다른 UI 기술에서 논리를 재사용하려면 다른 구현을 만들 수 있습니다.

이것을 사용하십시오 System.Web.Hosting.HostingEnvironment.mappath ().

HostingEnvironment.MapPath("~/file")

아무도 여기서 언급 한 사람이 아무도 궁금합니다.

HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);

건축 적으로 System.Web는 BLL (Business Logic Layer)에서 언급해서는 안됩니다. 솔루션 구조에 BLL을 사용하여 별도의 관심사 원칙을 따르므로 System.web는 나쁜 관행입니다. BLL은 ASP.NET 컨텍스트에서로드/실행되지 않아야합니다. 사용을 고려해야 할 이유 때문에 System.AppDomain.CurrentDomain.BaseDirectory 대신에 System.Web.HttpContext.Current.Server.MapPath

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top