尝试Catch Block似乎在IIS 7下被忽略

时间:2012-02-14 16:37:56

标签: asp.net iis-7 try-catch

我有一个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);
        }
然而,挡块永远不会发射。

1 个答案:

答案 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;
    }
}