2017-03-28 55 views
0

我想在我的Web应用程序/ Web服务的bin目录中包含一个XML文件。我在Visual Studio的项目中包含了bin文件夹并添加了该文件。我将其构建操作设置为“内容”并将其复制到输出目录以“始终复制”。当我的代码去找到它,我用将内容文件添加到Web服务并从Web服务访问内容文件

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
if (!dir.EndsWith(@"\")) dir += @"\"; 

拿到目录,并返回它作为appPath,其中appPath是(转义版本):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\0c7655f\d4908928\assembly\dl3\5cf9fd67\fdc52284_ffa7d201\ 

然后我附上的文件名我XML文件(其中string filename = "myXmlFile.xml")来阅读:

StreamReader reader = new StreamReader(appPath + filename); 

但我得到一个异常的那行代码,它找不到我的文件。我正在处理斜线的罚款,所以不是这样。当我检查路径指向的物理目录时,它没有复制到该目录,这是异常的原因。那么如何让我的文件在那里复制?

回答

1

如何使用HostingEnvironment.ApplicationPhysicalPath

var dir = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "bin\\filename.xml") 

参阅相关的问题how to get the application path in asp.net?

+0

非常好!作品!非常感谢! – vapcguy

+0

实际上 - 我们后来发现,如果我们想写任何文件,我不应该在我的文件应该存在的地方使用'bin'。无论何时,您从Web应用程序或服务写入其下的文件夹中的内容文件时,都会重置网站 - 因此将清除任何静态全局变量。对于任何想追随我的脚步的人来说,请谨慎小心。当我们将它移到与站点相同的级别时,一切都很好 - 所以我们现在不再在该路径中使用“bin”。干杯! – vapcguy

相关问题