2011-03-25 42 views
0

我在Global.asax以下經典代碼寫了這個代碼。每次我啓動網站時,都會顯示此錯誤。在我刷新頁面後,它進入正確的頁面。我不明白爲什麼。響應在此上下文中不可用。回覆於(ex.ToString());

Response is not available in this context. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Response is not available in this context.

Source Error:

Line 26:   catch (Exception ex) 
Line 27:   { 
Line 28:    Response.Write(ex.ToString()); 
Line 29:   } 
Line 30: 

<script runat="server">

void Application_Start(object sender, EventArgs e) 
{ 
    try 
    { 
     if (Roles.RoleExists("Administrators") == false) 
      Roles.CreateRole("Administrators"); 
     if (Membership.FindUsersByName("ken").Count == 0) 
     { 
      Membership.CreateUser("ken", "123", "[email protected]"); 
      Roles.AddUserToRole("ken", "Administrators"); 
     } 
     if (Membership.FindUsersByName("dan").Count == 0) 
      Membership.CreateUser("dan", "123", "[email protected]"); 


    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.ToString()); 
    } 

}

< /腳本>

+0

我不知道什麼異常捕獲正在迎頭趕上? – 2011-03-25 05:55:06

+0

您提到的代碼在哪個事件中存在? – V4Vendetta 2011-03-25 05:56:51

回答

0

我認爲,最有可能你有你的應用中的一些問題,啓動代碼,導致成帶你到catch塊異常。出於某種原因,響應對象不可用,因此您會得到未處理的異常。由於應用程序已經啓動,代碼路徑不會再次被訪問,並且在後續請求中看不到錯誤。

我建議你登錄異常的文件,而不是響應發射它來檢查原始異常的細節,將燈罩光實際問題,爲什麼在應對不可用。您可以使用System.Diagnostic.Trace和跟蹤監聽器進行日誌記錄(或者可以使用庫,例如​​Log4Net或MS Logging App Block)

2

當應用程序由IIS啓動時,Application_Start只執行一次。問題的真正原因在於代碼try塊,您可以使用診斷日誌框架內,或通過設置catch塊中的斷點。

您不可以使用的Response.Write的catch塊,因爲沒有與相關的Application_Start請求(或響應)。這樣做會觸發新的異常,從而隱藏了問題的原因。查看ASP.NET Application Lifecycle瞭解更多詳情。

+0

媽的,我幾乎完成了我的答案,但你更快;) – citronas 2011-03-25 07:32:10

+0

@citronas這發生在我們所有的:-) – 2011-03-25 17:54:33

相關問題