开发者

Getting file path in ASP.NET and XDocument.Load

开发者 https://www.devze.com 2023-01-15 23:24 出处:网络
I have a static class in a folder off root in my solution. In that static class\' folder, there\'s a subfolder containing XML files. So I\'ve got these files:

I have a static class in a folder off root in my solution. In that static class' folder, there's a subfolder containing XML files. So I've got these files:

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

I'm having trouble using XDocument.Load() with those XML files. Specifically, I'm trying to load the XML files from the static constructor of MyStaticClass.

XDocument.Load() can't seem to find the files, however. I've tried all these and none work:

static MyStaticCl开发者_StackOverflow社区ass()
{
    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");
}

I also tried using Assembly.GetExecutingAssembly().Location and Assembly.GetEntryAssembly().Location before the relative path, but the assembly resolved by Assembly is always a .NET library (because the type is being initialized?).

How can I load the file without changing its location in the solution?


In ASP.NET you should use Server.MapPath() to find all local files.

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

XDocument doc = XDocument.Load(absPath);


For .NET web apps use HttpContext.Current.Server.MapPath("~/"); this will get you the root directory of the executing file.

0

精彩评论

暂无评论...
验证码 换一张
取 消