2012-06-08 82 views
0

我寫了一個ASP.net的Web應用程序。爲了遵循「實用程序員」中關於將應用程序邏輯置於配置中的建議,我編寫了一個描述各種業務規則的大型XML文件。如何使用我的web應用程序部署XML文件?

當我在本地開發工作站上測試應用程序時,我將該文件複製到c:\xxxxx\myfile.xml,然後編寫代碼以從此位置讀取文件。

將這個xml文件作爲我的web應用程序的一部分部署的正確方式是什麼,以便從部署web應用程序的目錄中讀取它?

更新:有問題的XML文件用於服務器端配置,並且從不可用於下載到最終用戶。

回答

3

如果你沒有嵌入這是一種資源,你應該:

  1. 創建一個目錄下,此文件將駐留。
  2. 創建該文件並將其生成操作設置爲內容。
  3. 在該目錄中創建一個web.config文件,該文件禁止訪問目錄,因此您不會將業務規則暴露給Internet。
  4. 在應用程序的主web.config中添加一個設置,該設置爲該文件提供了相對於應用程序根目錄的路徑,即「〜/ MySecureFolder/MyBusinessRules.Xml」。
  5. 有一些代碼調用HttpServerUtility.MapPath Method將web.config中的設置值轉換爲虛擬路徑。
+0

+1:謝謝!這有效,但我希望可以存在一個更優雅的解決方案。 –

0

我不知道這是你想要的 - 點擊XML文件,然後打開屬性窗口並找到「Build Action」屬性。將該值設置爲「嵌入式資源」

-1

如果您希望將來自http請求的XML文件提供給您的服務器,則應將其放入您的Web發佈文件夾中。

此ASP指令應該可以幫助您找到您的出版物路徑: Request.ServerVariables(「APPL_PHYSICAL_PATH」)

+0

不,我想使用XML文件進行服務器端配置。它不應該由客戶端下載。 –

0

我想你需要做的是:

  1. 的XML文件添加到您在Visual Studio的Web應用程序項目
  2. 上的文件點擊右鍵,選擇「屬性...」
  3. 設置生成操作到「內容」和複製到輸出目錄到'不要複製'

這將確保您的XML文件與您的其他Web應用程序一起部署。

+0

爲什麼「不要複製」? –

+0

@DanielAllenLangdon - 因爲否則該文件將被複制到您的輸出目錄 - 在Web應用程序的情況下是bin文件夾。將構建操作設置爲「內容」可確保該文件的處理方式與站點中的ASPX/ASHX/ASCX相同,因此無需在文件夾中添加額外的副本。 – KazR

+0

按照您的指示,當我將應用程序部署到目標目錄時,我根本沒有該文件,那麼如何讓我的應用程序在運行時讀取該文件? –

相關問題