0

我打算在windows服务中托管服务,但我正在考虑标题中描述的问题。有人有类似的问题吗?谢谢

更新

问题是当您在 WinForms/WPF/Win Service 应用程序中引发异常时,程序会崩溃,您必须重新启动它。

4

2 回答 2

1

异常并不总是使您的服务器崩溃。即使是意外的服务器端异常也会转移到客户端。它被认为比预期的更严重,导致通道故障。

基本思想是在你的接口契约中包含预期的异常(错误)。有很多方法可以做到这一点,这里有一篇介绍文章

当然,您需要在服务器上进行体面的异常处理。

于 2011-04-09T19:15:46.413 回答
0

您可以尝试通过在主机应用程序的 Main 方法入口点中挂钩 ThreadException 事件来拦截任何异常,以检查它是否是 FaultException。

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());

        // Hook to this event below
        Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
    }

    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {
        if (e.Exception is FaultException)
            return; // Bypass FaultExceptions;
        else
            throw e.Exception; // Throw otherwise
    }
}
于 2011-04-09T21:21:25.673 回答