<= SDK 1.2改到SDK 1.3WebRole Hosting的差異圖示
被連續問了幾回,特別在這裡說明一下:
如果你的Windows Azure 應用程式執行時得到這個錯誤訊息:
“SetConfigurationSettingPublisher needs to be called before FromConfigurationSetting can be used”
這是因為SDK 1.3版已經可以支援完整的IIS功能,也就是執行程序又交回給標準的W3WP.exe 程式了,這個時候請將原本寫在WebRole.cs內的 OnStart()
讀取 RoleEnvironment.GetConfigurationSettingValue 的程式區塊移到 Global.asax 的Application_Start()內就可以了。
搬移後的Application_Start()如下:
- void Application_Start(object sender, EventArgs e)
{
// configuration settings change in the service configuration file.
CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
// Provide the configSetter with the initial value
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
}); - }
另一個新的問題: 403 – Forbidden: Access is denied.
這也是SDK 1.3 之後才有的現象,原因是 Azure的web-site 不會自動抓取設定起始網頁(當然改成default 也可以),
所以當你吃到這個 error 之後只要在URL 最後在加上正確的網頁名稱就可以了,也就是你要能指向正確該啟動的網頁,
例如:
甚麼是完整的 IIS 功能,說穿了就是一開始是Windows Azure 自己的一支程式在做這件事(叫作 WaWebHost.exe),現在改回來由IIS來 Hosting了(W3Wp.exe),
當然就不需要在webrole.cs內做 OnStart()時做 configure 值的設定了.
可以參考Marx 的說明: http://blog.smarx.com/rss



