如何在ASP .net中读取复制到输出目录的文件?

5

我有一个VS 2012 Web服务项目,其中包括一个名为myconfig.xml的文件,我已将该文件的复制操作属性设置为“始终复制”

我尝试使用以下代码行加载XML文件:

doc.Load("myconfig.XML");

然而,ASP.net引发了异常,因为它无法从C:\program files (x86)\IIS Express 7读取文件。
我已经尝试过以下方法:
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

但它返回的是临时目录的路径,我该如何获取myconfig.XML的实际位置?

3个回答

3
在ASP.NET中,您应该始终使用 Server.MapPath
// root folder
var docPath = Server.MapPath("/doc.xml");

// some other folder
var docPath = Server.MapPath("/folder/doc.xml");

1
那就是了,Server.MapPath 起作用了 :) 有没有一种方法可以返回相同的值,我可以在桌面和 Web 应用程序中使用? - user2005494
Server.MapPath() 在所有环境中都有效吗?包括Web、控制台、服务工作者和容器吗? - Zapnologica
我正在使用 asp.net core,它找不到任何对 "Server" 的引用。 - Zapnologica
@Zapnologica 的问题是关于 asp.net,asp.net core 有不同的架构,静态文件被注入到服务中,您需要在应用程序中全局存储对静态文件文件夹的引用。 - Akash Kava

2
应该是:
Environment.CurrentDirectory

在Web环境中,您可以使用AppDomain来确定目录,例如:
AppDomain.CurrentDomain.BaseDirectory

0
你是否考虑过使用asp.net可以创建多个配置文件?
看一下这篇文章的被接受回答,它应该会指导你正确方向。 Multiple ASP.NET Configuration Files

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接