2011-05-09 53 views
1

我想我讀的地方,該WebRole在不同的進程比IIS在Windows Azure上運行,從而能夠Web和輔助角色http://things.smarx.com/#Combine%20Web%20and%20Worker%20RolesASP.NET會捕獲WebRole類中引發的異常嗎?

結合假設下面的通用代碼:

public class WebRole : RoleEntryPoint 
{ 
    public override void Run() 
    { 
     ... Exception gets thrown here. 
    } 
} 

不這需要一個單獨的異常處理方法? 運行是否與OnStart不同,這意味着某些服務已啓動? 任何最佳實踐? ASP.Net運行時intitialized之前

回答

2

問題和內嵌問題的標題是不同的 - 這是一個你最關心的?

的WebRole在1.3+ SDK可以運行完整的IIS,其在不同的工藝比RoleEntryPoint運行。這意味着出於異常處理的目的,RoleEntryPoint和IIS Web應用程序完全隔離。你需要明確的錯誤處理,因爲一個不適用於另一個。

你問其他問題與運行VS的OnStart做。在實例連接到LoadBalancer之前調用OnStart方法。這是您在主動流量擊中之前用任何需要做的事來引導角色的機會。您必須返回true並且不要在OnStart中拋出錯誤,否則您將永遠不會獲得活動實例。有些人使用OnStart以編程方式創建他們所需的IIS資料(網站,應用程序,vdirs等)。 Run方法是您進入主工作邏輯的入口點。它就像靜態無效的主要()(但你永遠不會退出)。

現實情況是,Web和輔助角色是幾乎相同與唯一的例外是,Web角色有一些不錯的聲明語法現在設置IIS爲您服務。在使用RoleEntryPoint時,所有其他工作角色中的runnig警告都適用於Web角色。

+0

太好了,謝謝。我想有很多問題,因爲我不確定它們是否實際上是兩個獨立的過程。感謝您的額外見解,它會有所幫助。 Azure的恢復速度非常快,這很好,但是當樣本和文檔稍微落後時,它也很難。再次感謝。 – Dax70 2011-05-09 18:31:48

1

RoleEntyPoint被intialized。據我記得,如果Run方法拋出異常,該角色將回收,並且您可以在Azure管理門戶中看到該回收。有關提示,請參閱this

相關問題