如何在本地引用xml文件?

bur*_*1ce 1 c# asp.net

我有一个ASP.NET项目和一个类库项目的解决方案,其中ASP.NET项目依赖于类库作为数据访问层.

在我的类库项目中,我有SiteSetting.xml和c#代码,它们正在请求xml文件,如下所示.

C#代码:


DataSet ds = new DataSet();
ds.ReadXml("SiteSetting.xml");
Run Code Online (Sandbox Code Playgroud)

当我启动我的asp.net应用程序并查看调用上面的c#代码的页面时,我收到一条错误消息"无法找到文件'C:\ Program Files\Microsoft Visual Studio 9.0\Common7\IDE\SiteSetting.xml' ".

C:\ Program Files\Microsoft Visual Studio 9.0\Common7\IDE \显然不是我的c#代码所在的位置.我的源代码在c:\ Projects ..但是我的ASP.NET和类库项目的编译二进制文件在哪里被执行?更好的问题是,如何在ds.ReadXml()的上下文中使用相对路径正确引用SiteSetting.xml?

我想使用相对路径,以便在找到SiteSetting.xml时,执行二进制文件的位置不会出现问题

更新 感谢您的输入人员.Server.MapPath()很接近,但没有雪茄.Server.MapPath在我的ASP.NET项目中返回一个相对路径,而不是我的c#,这是我的SiteSettings.xml所在的位置.

因此,例如我有一个名为StackOverflow的项目,它有一个名为"StackOverflow.Data"的C#项目和一个名为"www"的ASP.NET Web项目,那么我将拥有以下文件夹.

c:\ Projects\StackOverflow c:\ Projects\StackOverflow\StackOverFlow.Data < - 类库项目作为我的数据访问层c:\ Projects\StackOverflow\www < - 调用StackOverflow.Data类和方法的ASP.NET项目

Server.MapPath("〜/ SiteSettings.xml")返回c:\ Projects\StackOverflow\www\SiteSetting.xml.我需要一种方法来获取像c:\ Projects\StackOverflow\StackOverflow.Data\SiteSetting.xml这样的路径

Phi*_*ppe 9

使用MapPath?:

var filePath = HttpContext.Current.Server.MapPath("~/App_Data/SiteSetting.xml");
Run Code Online (Sandbox Code Playgroud)