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);