[C#] ASP.NET의 외부 C # 클래스에서 Server.MapPath 사용

C # 클래스에서 특정 파일의 절대 경로를 얻으려고합니다. Server.MapPath물론 ASPX 및 코드 숨김 페이지에서 훌륭하게 작동하지만 다른 클래스 파일에는 존재하지 않습니다. 시도 HostingEnvironment.MapPath()했지만 상대 가상 경로가 허용되지 않는다고 불평합니다. 이견있는 사람?

System.Web 이미 가져 왔습니다.



답변

ServerUtility클래스는의 인스턴스로 사용할 수 있습니다 HttpContext. ASP.Net 파이프 라인 내에서 실행된다는 것을 알고있는 환경에 있다면

HttpContext.Current.Server.MapPath()

System.Web그래도 가져와야 합니다.


답변

당신은 또한 사용할 수 있습니다 :

var path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/myfile.txt")

만약

var path = Server.MapPath("~/App_Data");
var fullpath = Path.Combine(path , "myfile.txt");

접근 할 수 없다


답변

당신은 단지에 대한 참조를 추가 할 수 없습니다 System.Web그리고 당신은 사용할 수 있습니다 Server.MapPath?

편집 : 요즘에는 HostingEnvironment.MapPath방법을 사용하는 것이 좋습니다 .

System.Web가상 경로를 서버의 실제 경로에 매핑하는 어셈블리 의 정적 메서드입니다 . 에 대한 참조가 필요 하지 않습니다HttpContext .


답변

System.Reflection.Assembly.GetAssembly(type).Location

가져 오려는 파일이 유형의 어셈블리 위치 인 경우 그러나 파일이 어셈블리 위치를 기준으로하는 경우 System.IO네임 스페이스 와 함께 사용 하여 파일의 정확한 경로를 얻을 수 있습니다.


답변

나도 이것을 사용한다 :

System.Web.HTTPContext.Current.Server.MapPath


답변

class test
{
public static void useServerPath(string path)
{
   if (File.Exists(path)
{
 \\...... do whatever you wabt
}
else
{
\\.....
}
}

이제 코드 숨김에서 메소드를 호출하면

예를 들면 다음과 같습니다.

protected void BtAtualizacao_Click(object sender, EventArgs e)
        {
             string path = Server.MapPath("Folder") + "\\anifile.txt";

            test.useServerPath(path);
}

이 방법으로 코드는 간단하며 하나의 방법으로 각 호출에 대해 여러 경로를 사용할 수 있습니다. 🙂


답변

이것은 나를 위해 도움이

//System.Web.HttpContext.Current.Server.MapPath //        
FileStream fileStream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/File.txt"),
FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);