处理错误“WebDev.WebServer.Exe已停止工作”

时间:2012-09-26 22:07:58

标签: c# asp.net error-handling

有没有办法处理错误" WebDev.WebServer.Exe已停止工作"在ASP.NET中保持页面运行甚至只是WebServer运行?或者这是一项不可能完成的任务,本质上就像是在他们去世后如何挽救某人的生命?

我在try / catch块中有导致错误的代码,但这并没有什么不同。我也尝试过注册一个新的UnhandledExceptionEventHandler,但这也没有用。如果我做错了,我的代码就在下面。

另外要明确的是,我并没有就如何防止错误寻求帮助;我想知道是否以及何时发生错误,如果我能做任何事情来处理它。

更新1:TestOcx是一个VB6 OCX,它将字符串的引用传递给用Clarion编写的DLL。

更新2:根据@JDennis的回答,我应该澄清,catch(Exception ex)块也没有被输入。如果我从try\catch块移除了对OCX的调用,它仍然无法访问UnhandledException方法。基本上有两个区域无法执行。

更新3:来自@AndrewLewis,我还试图添加一个常规的catch块来捕获任何非CLS兼容的异常,但这也不起作用。但是,后来我发现自.NET 2.0开始以来,所有非CLS异常都包含在RuntimeWrappedException内,因此catch (Exception)也会捕获非CLS兼容的异常。查看this other question here了解详情。

public bool TestMethod()
{
    AppDomain.CurrentDomain.UnhandledException +=
        new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

    string input = "test";
    string result = "";
    try
    {
        TestOcx myCom = new TestOcx();
        result = myCom.PassString(ref input); // <== MAJOR ERROR!
        // do stuff with result...
        return true;
    }
    catch (Exception ex)
    {
        log.Add("Exception: " + ex.Message); // THIS NEVER GETS CALLED
        return false;
    }
}

private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    // THIS NEVER GETS CALLED
    try
    {
        Exception ex = (Exception)e.ExceptionObject;
        log.Add("Exception: " + ex.Message);
    }
    catch (Exception exc)
    {
        log.Add("Fatal Non-UI Error: " + exc.Message);
    }
}

2 个答案:

答案 0 :(得分:1)

您应该尝试捕获非CLS兼容的异常,以确保不会抛出任何内容(请记住,您不希望在生产中执行此操作,始终具体!):

try
{
    TestOcx myCom = new TestOcx();
    result = myCom.PassString(ref input); // <== MAJOR ERROR!
    // do stuff with result...
    return true;
}

catch (Exception ex)
{
    log.Add("Exception: " + ex.Message); // THIS NEVER GETS CALLED
    return false;
}
catch
{
   //do something here
}

答案 1 :(得分:0)

  

您的代码为 //这绝不会得到

如果您发现异常,则不再处理该异常。这就是为什么它不会触发unhandledexception事件。

相关问题