2012-11-05 35 views
0

因此,我設置了我的Global.asax文件,在發生非常規異常時給我發電子郵件。我收到一封電子郵件,其中包含的異常不會顯示給用戶,並且代碼似乎在客戶端正常工作,並且頁面加載並執行期望的操作。沒有YSOD的例外

我有這樣的代碼在aspx文件,其中顯示了基於角色或客戶編號開始爲特定的字符複選框...

<% if (Roles.IsUserInRole("Admin") || 
        txtAccountNo.Text.Substring(0, 2) == "UK" || 
        txtAccountNo.Text.Substring(0, 2) == "FR" || 
        txtAccountNo.Text.Substring(0, 2) == "IT" || 
        txtAccountNo.Text.Substring(0, 2) == "DK" || 
        txtAccountNo.Text.Substring(0, 2) == "SE") 
       { %> 
      <label for="chkExpressDelivery"><asp:Literal ID="Literal14" runat="server" Text="<%$ Resources:LocalizedText, fieldLabel_ExpressDelivery %>"></asp:Literal><span class="small"></span></label> 
      <asp:CheckBox ID="chkExpressDelivery" runat="server" Width="50px" CssClass="_checkbox _normalcheckbox" Text="&nbsp;" /> 
      <%} %> 

現在txtAccountNo從用戶配置文件屬性填充在aspx.cs文件中的Page_Load事件。

錯誤消息我接收該電子郵件(其中,客戶端永遠不會看到)是

索引和長度必須引用位置的字符串內。參數名:長度

我理解的錯誤消息 - 它在說的txtAccountNo.Text基本上是空的代碼運行時,但我不明白的是,客戶端永遠不會看到這個錯誤,頁面表現爲我想要它。

但是,如果我打開web.config文件中的自定義錯誤消息,客戶端被定向到自定義錯誤頁面,但沒有它,就客戶端而言沒有錯誤。

那麼我該如何糾正這個錯誤,這樣我才能打開我的自定義錯誤頁面?

我希望這是有道理的!讓我知道你是否需要更多信息。

感謝

斯圖爾特

這個代碼現在工作...

<% if (txtAccountNo.Text.Length > 0 && (Roles.IsUserInRole("Admin") || 
       txtAccountNo.Text.Substring(0, 2) == "UK" || 
       txtAccountNo.Text.Substring(0, 2) == "FR" || 
       txtAccountNo.Text.Substring(0, 2) == "IT" || 
       txtAccountNo.Text.Substring(0, 2) == "DK" || 
       txtAccountNo.Text.Substring(0, 2) == "SE")) 
      { %> 
     <label for="chkExpressDelivery"><asp:Literal ID="Literal14" runat="server" Text="<%$ Resources:LocalizedText, fieldLabel_ExpressDelivery %>"></asp:Literal><span class="small"></span></label> 
     <asp:CheckBox ID="chkExpressDelivery" runat="server" Width="50px" CssClass="_checkbox _normalcheckbox" Text="&nbsp;" /> 
     <%} %> 

回答

1

但是也有一些從未展示給客戶端的錯誤。它發生在我在頁面中使用AJAX控件時,客戶端有一定的IE版本。客戶不受它的影響,但它一直通過Emah發送錯誤郵件。
當激活自定義錯誤時,您的應用程序或IIS服務器可能會捕獲錯誤並以某種方式解釋錯誤。像這樣: mvc3 error on webserver, only get generic response也許這就是重定向發生的原因。
對於錯誤來源(txtAccountNo.Text爲空):如果代碼在頁面事件生命週期(例如初始化)的某個時刻運行,則控件中沒有數據。 爲避免該錯誤,您可以向if條件添加其他條件並檢查txtAccountNo.Length> 0.

+0

謝謝!我會給它一個去,讓它知道它是否有效!我似乎有一些像這樣的錯誤,其中aspx頁面中的代碼與aspx.cs文件中填充的字段有關。 – Stuart

+0

不客氣! – CristisS