Try Catch Block, кажется, игнорируется в IIS 7 - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть страница aspx с несколькими вызовами методов в событии page_load, некоторые из них взяты из .DLL (BusinessLayer), на который есть ссылка, но все они заключены в условный блок try / catch внутри (если! 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);
        }

, однако блок catch никогда не срабатывает.

1 Ответ

0 голосов
/ 15 февраля 2012

Я гарантирую, что это не имеет никакого отношения к IIS7, игнорирующему ваш блок try catch. Тем не менее, нередки случаи, когда приложения ведут себя по-разному при запуске из-за пределов отладчика, ведь он работает в совершенно другой среде.

Попробуйте подключить отладчик к процессу w3wp.exe, на котором запущен ваш веб-сайт, и просмотрите его, чтобы увидеть, где настоящая ошибка.

Эта ссылка содержит пример того, как присоединиться к процессу из Visual Studio 2010: http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx

Чтобы доказать, что IIS не игнорирует вашу попытку, просто создайте простую страницу подтверждения концепции, которая просто делает это в Page_Load ():

public void Page_Load()
{
    try 
    {
        throw new Exception("Test try-catch block");
    }
    catch(Exception e) 
    {
        lblException.Text = e.Message;
    }
}
...