簡體   English   中英

在ASP.NET中的外部C#類中使用Server.MapPath

[英]Using Server.MapPath in external C# Classes in ASP.NET

我試圖獲取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

這對我有幫助

//System.Web.HttpContext.Current.Server.MapPath //        
FileStream fileStream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/File.txt"),
FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
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);
}

通過這種方式你的代碼很簡單,一個方法你可以為每個調用使用多個路徑:)

無論您是否在ASP.NET的上下文中運行,您都應該能夠使用HostingEnvironment.ApplicationPhysicalPath

server.mappath(“”)將在aspx頁面上工作,如果你想從類文件中獲取絕對路徑,你必須使用這個 -

HttpContext.Current.Server.MapPath("~/EmailLogic/RegistrationTemplate.html")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM