我处理异常的方式是从发生异常的客户端页面为我的母版页上的控件设置值:
private void deleteUser(int userid)
{
try
{
ImajUser u = new ImajUser(userid, true);
u.Delete();
lblerr.Text = "User was deleted successfully.";
lblerr.ForeColor = System.Drawing.Color.Green;
}
catch (Exception ex)
{
this.Master.ErrorTitle.Text = "Delete User";
this.Master.ErrorMessage.Text = String.Format("Error actioning request: [ {0} ]", ex.Message);
this.Master.pnlErrorBG.Visible = true;
this.Master.pnlErrorModal.Visible = true;
}
}
当我对此进行测试时(上次我关闭数据库并尝试删除),我的 catch 块执行没有错误,但我得到了第一次机会异常并且调试器完全停止:
System.Data.Entity.dll 中出现“System.Data.EntityException”类型的第一次机会异常
程序“[2108] WebDev.WebServer40.EXE: Managed (v4.0.30319)”已退出,代码为 -2147023895 (0x800703e9) .
我以前从未见过这种情况。我不知道是什么原因造成的,我也不知道如何解决它......
任何帮助将不胜感激!
编辑
我为访问母版页控件设置的属性是:
public virtual Label ErrorTitle { get { return lblErrorAction; } }
public virtual Label ErrorMessage { get { return lblErrorMessage; } }
public virtual Panel pnlErrorBG { get { return ErrorBackground; } }
public virtual Panel pnlErrorModal { get { return pnlErrorModal; } }
这些引用控件:
<asp:Panel runat="server" id="ErrorBackground" visible="false"> </asp:Panel>
<asp:Panel runat="server" id="ErrorModal" visible="false">
<asp:Label runat="server" ID="lblErrorAction" CssClass="lblerrortitle"></asp:Label>
<asp:Label runat="server" ID="lblErrorMessage"></asp:Label>
<asp:Button runat="server" ID="btnErrorAction" CssClass="button" Text="Retry" OnClick="btnErrorAction_Click" />
</asp:Panel>
编辑 2
因此,我尝试将控件移动到实际发生异常的页面,并且该页面工作 100%,而在母版页上使用控件会导致错误。