因此,我设置了我的 Global.asax 文件,以便在发生未经处理的异常时向我发送电子邮件。我收到一封电子邮件,其中包含用户看不到的异常,并且代码在客户端似乎运行良好,并且页面加载并执行了预期的操作。
我在 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=" " />
<%} %>
现在 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=" " />
<%} %>