如何使用我的web应用程序部署XML文件?
我写了一个ASP.net的Web应用程序。为了遵循“实用程序员”中关于将应用程序逻辑置于配置中的建议,我编写了一个描述各种业务规则的大型XML文件。如何使用我的web应用程序部署XML文件?
当我在本地开发工作站上测试应用程序时,我将该文件复制到c:\xxxxx\myfile.xml
,然后编写代码以从此位置读取文件。
将这个xml文件作为我的web应用程序的一部分部署的正确方式是什么,以便从部署web应用程序的目录中读取它?
更新:有问题的XML文件用于服务器端配置,并且从不可用于下载到最终用户。
如果你没有嵌入这是一种资源,你应该:
- 创建一个目录下,此文件将驻留。
- 创建该文件并将其生成操作设置为内容。
- 在该目录中创建一个web.config文件,该文件禁止访问目录,因此您不会将业务规则暴露给Internet。
- 在应用程序的主web.config中添加一个设置,该设置为该文件提供了相对于应用程序根目录的路径,即“〜/ MySecureFolder/MyBusinessRules.Xml”。
- 有一些代码调用HttpServerUtility.MapPath Method将web.config中的设置值转换为虚拟路径。
我不知道这是你想要的 - 点击XML文件,然后打开属性窗口并找到“Build Action”属性。将该值设置为“嵌入式资源”
如果您希望将来自http请求的XML文件提供给您的服务器,则应将其放入您的Web发布文件夹中。
此ASP指令应该可以帮助您找到您的出版物路径: Request.ServerVariables(“APPL_PHYSICAL_PATH”)
不,我想使用XML文件进行服务器端配置。它不应该由客户端下载。 –
我想你需要做的是:
- 的XML文件添加到您在Visual Studio的Web应用程序项目
- 上的文件点击右键,选择“属性...”
- 设置生成操作到“内容”和复制到输出目录到'不要复制'
这将确保您的XML文件与您的其他Web应用程序一起部署。
为什么“不要复制”? –
@DanielAllenLangdon - 因为否则该文件将被复制到您的输出目录 - 在Web应用程序的情况下是bin文件夹。将构建操作设置为“内容”可确保该文件的处理方式与站点中的ASPX/ASHX/ASCX相同,因此无需在文件夹中添加额外的副本。 – KazR
按照您的指示,当我将应用程序部署到目标目录时,我根本没有该文件,那么如何让我的应用程序在运行时读取该文件? –
+1:谢谢!这有效,但我希望可以存在一个更优雅的解决方案。 –