如何使用我的web应用程序部署XML文件?

问题描述:

我写了一个ASP.net的Web应用程序。为了遵循“实用程序员”中关于将应用程序逻辑置于配置中的建议,我编写了一个描述各种业务规则的大型XML文件。如何使用我的web应用程序部署XML文件?

当我在本地开发工作站上测试应用程序时,我将该文件复制到c:\xxxxx\myfile.xml,然后编写代码以从此位置读取文件。

将这个xml文件作为我的web应用程序的一部分部署的正确方式是什么,以便从部署web应用程序的目录中读取它?

更新:有问题的XML文件用于服务器端配置,并且从不可用于下载到最终用户。

如果你没有嵌入这是一种资源,你应该:

  1. 创建一个目录下,此文件将驻留。
  2. 创建该文件并将其生成操作设置为内容。
  3. 在该目录中创建一个web.config文件,该文件禁止访问目录,因此您不会将业务规则暴露给Internet。
  4. 在应用程序的主web.config中添加一个设置,该设置为该文件提供了相对于应用程序根目录的路径,即“〜/ MySecureFolder/MyBusinessRules.Xml”。
  5. 有一些代码调用HttpServerUtility.MapPath Method将web.config中的设置值转换为虚拟路径。
+0

+1:谢谢!这有效,但我希望可以存在一个更优雅的解决方案。 –

我不知道这是你想要的 - 点击XML文件,然后打开属性窗口并找到“Build Action”属性。将该值设置为“嵌入式资源”

如果您希望将来自http请求的XML文件提供给您的服务器,则应将其放入您的Web发布文件夹中。

此ASP指令应该可以帮助您找到您的出版物路径: Request.ServerVariables(“APPL_PHYSICAL_PATH”)

+0

不,我想使用XML文件进行服务器端配置。它不应该由客户端下载。 –

我想你需要做的是:

  1. 的XML文件添加到您在Visual Studio的Web应用程序项目
  2. 上的文件点击右键,选择“属性...”
  3. 设置生成操作到“内容”和复制到输出目录到'不要复制'

这将确保您的XML文件与您的其他Web应用程序一起部署。

+0

为什么“不要复制”? –

+0

@DanielAllenLangdon - 因为否则该文件将被复制到您的输出目录 - 在Web应用程序的情况下是bin文件夹。将构建操作设置为“内容”可确保该文件的处理方式与站点中的ASPX/ASHX/ASCX相同,因此无需在文件夹中添加额外的副本。 – KazR

+0

按照您的指示,当我将应用程序部署到目标目录时,我根本没有该文件,那么如何让我的应用程序在运行时读取该文件? –