最近將一個Azure Work Role項目由Azure SDK2.4升級到了2.5。在升級完畢后,發(fā)現(xiàn)該Work Role項目無論是部署在本地的Azure emulator中還是Azure 生產(chǎn)環(huán)境上,都無法正常啟動。在本地的Emulator中調(diào)試時,OnStart()中設置斷點也無法走到,讓人感覺非常費解,因
最近將一個Azure Work Role項目由Azure SDK2.4 升級到了2.5。在升級完畢后,發(fā)現(xiàn)該Work Role項目無論是部署在本地的Azure emulator中還是Azure 生產(chǎn)環(huán)境上,都無法正常啟動。在本地的Emulator中調(diào)試時,OnStart()中設置斷點也無法走到,讓人感覺非常費解,因為沒有做過任何代碼的修改,僅僅是升級了Azure SDK而已。在Visual Studio中的Output看到了如下的調(diào)試輸出信息:
Microsoft.WindowsAzure.ServiceRuntime Information: 200 : Role entrypoint . CALLING OnStart():Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
Microsoft.WindowsAzure.ServiceRuntime Information: 202 : Role entrypoint . COMPLETED OnStart(): Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
The thread 0x9210 has exited with code 259 (0x103).
Microsoft.WindowsAzure.ServiceRuntime Information: 203 : Role entrypoint . CALLING Run(): Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
Microsoft.WindowsAzure.ServiceRuntime Verbose: 500 : Role instance status check starting
Microsoft.WindowsAzure.ServiceRuntime Verbose: 502 : Role instance status check succeeded: Ready
Microsoft.WindowsAzure.ServiceRuntime Warning: 204 : Role entrypoint . COMPLETED Run() ==> ROLE RECYCLING INITIATED: Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
Microsoft.WindowsAzure.ServiceRuntime Information: 503 : Role instance recycling is starting
The thread 0xa100 has exited with code 259 (0x103).
Microsoft.WindowsAzure.ServiceRuntime Information: 205 : Role entrypoint . CALLING OnStop(): Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
Microsoft.WindowsAzure.ServiceRuntime Information: 205 : Role entrypoint . CALLING OnStopping()
Microsoft.WindowsAzure.ServiceRuntime Information: 206 : Role entrypoint . COMPLETED OnStop(): Microsoft.WindowsAzure.ServiceRuntime.DefaultEntryPoint
不難看出,Azure emulator一直在調(diào)用ServiceRuntime中自帶的DefaultEntryPoint,壓根就沒有執(zhí)行到我程序中定義的繼承于RoleEntryPoint的類。也就是,Azure emulator/Azure沒有找到我的work role文件中定義的RoleEntryPoint。
這是為啥呢? 仔細想想,原來為了抽象出RoleEntryPoint,我們特地在其上繼承出另外一個類WorkRoleBase,并將它作為一個單獨庫項目,以便于其它類似WorkRole項目使用。但這個庫項目仍然使用的是Azure SDK 2.4,再將它也升級到2.5之后,該Work Role就可成功部署了。所以,之前的出現(xiàn)的問題很有可能是因為同時引用到兩個不同版本的的Azure SDK造成。
////// Worker role project using Azure SDK 2.5 ///
public sealed class WorkerRole : WorkerRoleBase { }
////// Worker role library using Azure SDK 2.4 ///
public abstract class WorkerRoleBase : RoleEntryPoint {
}
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com