0

我用 C# 构建了一个 ASP.NET RESTful 服务项目。我需要添加一些带有配置的自定义 XML 文件,我需要在运行时读取和处理这些文件。

我将 XML 文件添加到我的项目中,并将属性“复制到输出目录”设置为“始终复制”。

要打开文件,我使用了以下代码段:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configuration.xml");

当我将项目发布到服务器时,这工作正常,但如果我在本地运行 Web 服务,输出目录会更改,我必须附加bin到路径的开头,如:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin\\configuration.xml");

有没有办法为本地和远程服务器获取正确的输出目录?

4

2 回答 2

0

您可以将属性 Build Action 设置为 configuration.xml 的“嵌入式资源”,然后可以使用 Assembly.GetExecutingAssembly().GetManifestResourceStream() 访问该文件

例如 Assembly.GetExecutingAssembly().GetManifestResourceStream(MyPRoject.configuration.xml)

于 2014-05-07T09:59:03.813 回答
0

除了将文件复制到输出文件夹之外,您可以做的是将它们保存在根项目文件夹(或某些子文件夹结构)中,并使用HttpServerUtility.MapPath()方法来解析文件的正确物理路径服务器(本地和远程)。

因此,在您的情况下,HttpContext.Current.Server.MapPath("configuration.xml")将返回一个路径C:\MyWebApp\configuration.xml,您可以正常加载该路径。

于 2014-05-07T10:14:25.773 回答