2011-06-07 72 views
7

我運行在Windows Azure模擬器的web項目和web.config中沒有被加載。我作爲一個完整的IIS應用程序運行,並且可以在dev結構啓動後轉到在IIS中運行的應用程序,並瀏覽到文件位置,並驗證了正確的web.config確實位於文件夾中。Azure Web角色進程不加載web.config?

當我運行我的應用程序,沒有一個標準appSetting鍵,配置,或企業庫配置的加載。所有可用的數據都將從machine.config中提取。

我已通過查看配置管理器數據,conn字符串集合,並且有很多關於無法訪問我的數據庫的錯誤信息,因爲默認情況不存在,唯一的conn字符串是本地sql從machine.config表示服務器信息。

+0

有什麼與衆不同的用你的web.config的?如果你只有一些appSettings或一個連接字符串,會發生什麼?你能讀懂那些嗎?這聽起來像某些東西沒有正確格式化。你有可能發佈一個web.config示例嗎? – 2011-06-07 18:43:23

+0

@大衛 - 在配置沒有改變 - 應用無論是在Azure和的預置型跑步和-PREM工作就好了。我做了一個配置的二進制比較,它和我們在測試azure env中工作的一樣,仍然可以正常工作。這個xml已經過驗證,並且很好 - 沒有支架混搭。我的開發環境只是不加載它。我會發布時,如果我修復,但萬一這再次彈出。它可能會是愚蠢的,但可能不會在配置中....感謝您的幫助。 – Josh 2011-06-08 17:55:14

回答

5

其實,認爲這是一個PEBCAK問題。我在不同的服務,我們有,這是一個輔助角色,並恰好在服務器上生成一個新的EXE進程作爲一個黑客來包裝一個32位的第三方DLL,我們需要一些處理盲從現有的例子。

新的代碼我直接添加嘗試處理在我們的網頁角色之一,從隊列中一些消息。所執行的過程中的run()方法是直接拉開序幕永遠while循環以下,但這一過程預計可以訪問整個web.config文件(ENT LIB和EF)爲了工作 - 和我猜測的代碼在webrole中的存在方式與te web角色實例中的應用程序不同。

我能打開這之後的example網站的web配置,但我猜我將需要爲這個過程中一個單獨的輔助角色。恥辱,因爲這是一個微小的過程,但肯定是爛片。

任何人都可以確認代碼的執行webrole不應該訪問的web.config?通過「執行」,我的意思是這個過程在Run()中被啓動,但是作爲託管應用程序中的一個服務物理存在。我想這將等於期待來自衛星組件的配置項自動出現在主機進程的配置中。

呸!如果是這種情況,是否將此流程作爲工作人員角色修復?我找不到任何明確否認或確認我的期望......

我帶你去看看這裏太 - 老 - 但看起來幾乎相同 - 並且建議我的web.config應工作:

http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/07e7dde7-0c0b-4497-8019-303a58759deb

更新--- 我創建了一個工作者角色並將代碼移動到那裏,它按預期工作。所以我想要的是一個明確的 - 這絕不會從一個網站的角色,所以我給史蒂夫馬克斯發郵件。

@stevemarx來自個人通信 - 「webrole.cs中的代碼運行在與IIS下的web應用程序不同的進程中,而您當然應該能夠打開web.config並讀取它(它只是一個文件在當前目錄下),.NET不會做什麼特別的web.config那裏。(這就像把一個名爲web.config文件在同一目錄下,你正在運行一個控制檯應用程序。)」

所以,不,在webrole.cs進程的代碼將不會加載我的web.config。

7

不能正常訪問的時候,因爲它是在另一個進程中運行的作用盯着web.config中。你的角色屬性的角色設置(右鍵單擊您的角色並選擇屬性,然後選擇設置選項卡)時,你應該有你的角色設置,你可以從你的角色這樣的代碼訪問這些:

RoleEnvironment.GetConfigurationSettingValue("MySetting") 

如果你還是真的想使用你的web.config你可能能夠通過這樣做,首先右鍵單擊web.config文件,並選擇複製是否有更新,這將web.config複製到System.Environment.CurrentDirectory這是在所有其他角色組裝躺在。然後,你可以通過使用XML閱讀器加載它和自己解析它,我不認爲WebConfigurationManager會幫助你,因爲它需要一個虛擬路徑,所以我懷疑你就必須自己去解析它。

+0

不知道爲什麼這是-1。這是在WebRole.OnStart期間獲取配置設置的正確方法,因爲web.config尚未加載。 – danludwig 2011-12-08 18:33:58

相關問題