簡體   English   中英

獲取ASP.NET和XDocument.Load中的文件路徑

[英]Getting file path in ASP.NET and XDocument.Load

在我的解決方案中,我在根目錄下的文件夾中有一個靜態類。 在那個靜態類'文件夾中,有一個包含XML文件的子文件夾。 所以我有這些文件:

/PartialViews/Header/MyStaticClass.cs
/PartialViews/Header/Config/en-US.xml
/PartialViews/Header/Config/jp-JP.xml
...

我在使用XDocument.Load()和那些XML文件時遇到了麻煩。 具體來說,我正在嘗試從MyStaticClass的靜態構造函數加載XML文件。

XDocument.Load()似乎無法找到這些文件。 我已經嘗試過所有這些但沒有工作:

static MyStaticClass()
{
    XDocument doc;

    // These all throw exceptions relating to directory not found
    doc = XDocument.Load("/Config/en-US.xml");
    doc = XDocument.Load(@"\Config\en-US.xml");
    doc = XDocument.Load("/PartialViews/Header/Config/en-US.xml");
    doc = XDocument.Load(@"\PartialViews\Header\Config\en-US.xml");
}

我也嘗試使用Assembly.GetExecutingAssembly().LocationAssembly.GetEntryAssembly().Location的相對路徑之前,但解決了裝配Assembly始終是一個.NET庫(因為類型被初始化?)。

如何在不更改解決方案中的位置的情況下加載文件?

在ASP.NET中,您應該使用Server.MapPath()來查找所有本地文件。

string relPath = "~/PartialViews/Header/Config/en-US.xml";
string absPath = Server.MapPath(relPath);

XDocument doc = XDocument.Load(absPath);

對於.NET Web應用程序,使用HttpContext.Current.Server.MapPath("~/"); 這將獲得執行文件的根目錄。

暫無
暫無

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

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