将内容文件添加到Web服务中,并从Web服务中访问内容文件。
将内容文件添加到Web服务中,并从Web服务中访问内容文件。
我想在我的Web应用程序/ Web服务的bin目录中包含一个XML文件。我已经在Visual Studio中将bin文件夹包含在我的项目中,并添加了该文件。我将其Build Action设置为“Content”,将Copy to Output Directory设置为“Copy Always”。当我的代码去找它时,我使用以下代码获取目录并将其作为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);
但是我在那行代码上遇到了一个异常,说找不到我的文件。我已经正确处理了斜杠的转义,所以不是那个问题。当我检查路径指向的物理目录时,发现它没有被复制到那个目录,这就是异常的原因。那么我如何将我的文件复制到那里呢?
问题的原因是在Web应用或服务中向其下的文件夹中的内容文件进行写操作时,会导致该站点被重置,从而清除任何静态全局变量。解决方法是将内容文件放在与站点相同的层级上,而不是放在“bin”文件夹中。这样做可以避免重置站点的问题。
下面是一个示例代码,演示了如何将内容文件添加到Web服务并从中访问内容文件:
using System.IO; using System.Web.Hosting; // 获取应用程序的物理路径 var applicationPath = HostingEnvironment.ApplicationPhysicalPath; // 创建内容文件的路径 var contentFilePath = Path.Combine(applicationPath, "filename.xml"); // 对内容文件进行操作 // ... // 从内容文件中读取数据 // ...
需要注意的是,在实际操作中,不要将内容文件放在“bin”文件夹中,以避免重置站点的问题。