2010-09-09 70 views
1

我目前在AppFabric服務器上運行WCF服務,我的應用程序需要動態加載web.config文件以檢索自定義配置節。如何檢索Web應用程序當前正在哪個網站上運行?

在我的機器,我可以只加載這樣的結構:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath); 

但試驗機(AppFabric的服務器)上我得到一個例外,看來我需要指定第三個參數,實際上是網絡應用程序運行的網站:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath, "MySite"); 

所以我試圖硬編碼它,它的工作。無論如何,這是不可接受的,所以我需要動態地提供網站到WebConfigurationManager,因爲我不會在將來運行服務的站點。有誰知道如何做到這一點?

謝謝。

回答

0

如果運行這個代碼的處理請求部分,你可以使用:

Request.ServerVariables("server_name") 

見:http://msdn.microsoft.com/en-us/library/ms525396(VS.90).aspx

編輯根據您的評論

,你所需要的參數是網站名稱,而不是機器名稱,您的代碼在許多機器上運行。如果代碼運行在不知道它在網站上的地方,那麼它很難獲取它所運行的網站的名稱。

然後你有兩種選擇:

  • 發送名稱從已httpconext
  • 不知道這是否會工作層的參數:但你可以嘗試添加一個參考System.Web程序來你的項目。它可能會編譯,但運行它時可能會得到空引用異常。可能值得一試。
+0

負責加載配置中的代碼實際上是在C#程序集和似乎沒有任何的HttpContext運行ASP.NET開發服務器時(一個Visual Studio中使用的部署) 。無論如何,這對我來說似乎很合理。 – Ucodia 2010-09-09 07:56:28

相關問題