我有一个aspx页面,在page_load
事件中有几个方法调用,其中一些是
来自引用的.DLL(BusinessLayer),但所有这些都包含在try / catch中
(if!this.IsPostBack)条件块。在catch
部分,我有一个方法调用,输出一些javascript来显示fancybox jquery插件中的错误消息,因为这
更好的错误通知然后实现带重定向的错误页面。
在VS 10中运行此功能一切正常,发生错误并弹出fancybox但是 当我将它移动到IIS 7时,它显示标准的asp.net错误页面,带有丑陋的消息。我搞不清楚了。这是我在page_load上做的事情:
try
{
SetDataSource();
IBusinessLayer bl=this.GetInstanceOf(IBusinessLayer);
this.LabelStatus.Text=bl.GetStatus();
}
catch (Exception ex)
{
this.ShowError(ex);
}
然而,挡块永远不会发射。
答案 0 :(得分:0)
我保证这与IIS7忽略您的try catch
阻止无关。但是,从调试器外部运行时,看到应用程序的行为方式并不常见,毕竟它在完全不同的环境中运行。
尝试将调试程序附加到运行您网站的w3wp.exe
进程,然后逐步查看它以查看真正的错误。
此链接提供了如何从Visual Studio 2010附加到进程的示例: http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx
为了简单地证明IIS没有忽略你的try catch,只需在Page_Load()上做一个简单的概念验证页面:
public void Page_Load()
{
try
{
throw new Exception("Test try-catch block");
}
catch(Exception e)
{
lblException.Text = e.Message;
}
}