Как скинуть FaultException с самостоятельного хостинга wcf сервиса? - PullRequest
0 голосов
/ 09 апреля 2011

Я планирую разместить службу в службе Windows, но я думаю о проблеме, описанной в заголовке. У кого-нибудь была похожая проблема? Спасибо

Обновление

Проблема заключается в том, что при возникновении исключения в приложении WinForms / WPF / Win Service происходит сбой программы, и вам придется перезапустить ее.

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Исключение не всегда приводит к сбою вашего сервера.Даже непредвиденное исключение на стороне сервера будет передано клиенту.Это считается более серьезным, чем ожидалось, хотя, нарушая канал.

Основная идея заключается в том, чтобы включить ожидаемые исключения (ошибки) в ваши контракты интерфейса.Есть много способов сделать это, вот вводная статья .

И, конечно, вам нужна достойная обработка исключений на сервере.

0 голосов
/ 10 апреля 2011

Вы можете попытаться перехватить любые исключения, подключившись к событию ThreadException в точке входа основного метода вашего хост-приложения , чтобы проверить, не является ли оно ошибкой.

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
    }
}
...