2011-10-07 36 views
2

我創建了一個空的Azure雲服務項目,然後在那裏添加了Web角色。角色項目有一個web.config文件。在Compute Emulator中運行Azure Web角色時,web.config文件位於何處?

當我點擊F5時,角色被部署在Compute模擬器中。我進入了部署角色二進制文件的文件夾 - 那裏沒有web.config文件。

發生了什麼事?那是因爲我沒有在web.config文件中設置「始終複製」?我的角色使用什麼web.config?

+0

我假設你使用的是託管Web核心網絡的作用。那是對的嗎? –

+0

@jmac:我想這是「IIS模式」 - 我在角色定義中有''。 – sharptooth

回答

1

如果您的角色配置爲完全IIS模式(對於不知道Hosted Web Core與完全IIS之間區別的人員,請參閱this blog post),則計算模擬器應將Web角色部署到IIS,以便在IIS管理器中查看它。在我的機器上(我正在運行Azure SDK 1.5),部署的Web角色的物理路徑是我的源代碼目錄。

0

我認爲web.config是作爲開發環境中的內容編譯到您的程序集中的,並且不能像staging/prod那樣直接訪問。如果標記爲「內容」,則不需要使用「始終複製」。您可以使用Environment.CurrentDirectory來查看您的網站根路徑。

0

儘管在Windows Azure應用程序中存儲配置的首選方式是在ServiceConfiguration.cscfg文件中,但仍然有許多情況需要使用普通的.NET配置文件 - 尤其是在配置.NET系統組件或可重用的框架。特別是無論何時使用Windows Azure診斷,都需要在.NET配置文件中配置DiagnosticMonitorTraceListener。

當您創建Web角色項目時,Visual Studio將爲您的.NET配置創建一個web.config文件。雖然您的Web應用程序可以訪問此信息,但您的RoleEntryPoint代碼不能 - 因爲它不作爲您網站的一部分運行。如前所述,它在名爲WaIISHost.exe的進程下運行,因此它期望其配置位於名爲WaIISHost.exe.config的文件中。因此,如果您在Web項目中使用此名稱創建一個文件,並將「複製到輸出目錄」屬性設置爲「始終複製」,則會發現RoleEntryPoint可以愉快地閱讀此內容。這是我能想到的在同一個項目中將有兩個.NET配置文件的唯一情況之一!

所有信息是從Azure團隊博客,我已經使用這個解決方案successfully- http://blogs.msdn.com/b/windowsazure/

相關問題