Нечетная .Net Runtime Ошибка: system.servicemodel.fault - PullRequest
0 голосов
/ 19 сентября 2011

Мы видим, что эта ошибка возникает в наших системных журналах событий тревожной суммы. Это относится к очень простому приложению командной строки (буквально четыре или пять строк фактического кода обработки), которое использует веб-сервис на той же машине. Я изменил конфигурацию приложения, и казалось, что все исправлено, но теперь он вернулся. Ошибка появляется только в окне просмотра событий и выглядит примерно так:

Тип события: ошибка
Источник события: отчеты об ошибках .NET Runtime 2.0
Категория события: нет
Код события: 5000
Дата: 19.09.2011
Время: 09: 26: 04
Пользователь: N / A
Компьютер: SQL
Описание: EventType clr20r3, P1 estimatorcli.exe, P2 1.0.0.0, P3 4e410f1b, P4 mscorlib, P5 2.0.0.0, P6 4d8c128c, P7 420e, P8 51, P9 system.servicemodel.fault, P10 NIL.

Извините, если это слишком много.
Поиск в Google не принес много информации, только некоторые неясные ссылки на EventType. Я пробовал отладку, и большую часть времени программа отлично работает на моей машине для разработки XP64 (на сервере работает 2003 Ent64). Однако когда я обновляю ссылку на службу, Visual Studio создает две ссылки на веб-службу, и при попытке запустить приложение выдает неприятную ошибку, которая, по-видимому, указывает на то, что приложение не может определить, какие из ссылок оно должно использовать. Удаление избыточной ссылки в файле app.config, кажется, излечивает это, но я сделал это и переместил скомпилированное приложение на сервер, и все еще получаю эту ошибку. Мне также интересно, что ошибка указана как .Net 2.0, когда приложение было написано для .Net 3.5; на сервере установлен .Net 3.5SP1.
Может ли это быть ошибка Visual Studio? Если так, может ли быть способ обойти это?
Спасибо.
Обновление : После прохождения трассировки стека я смог обнаружить, что ошибка была моей ошибкой; Я не передал достаточно параметров через хранимую процедуру. Оглядываясь назад, я думаю, что весь фреймворк работал, как и следовало ожидать, я просто хотел бы, чтобы ошибки были легче читать!

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Как правило, среда выполнения .NET уведомляет вас о неперехваченном исключении в вашем приложении.

Поскольку у вас есть «простое приложение командной строки», попробуйте поместить блок try / catch вместе с записьюисключение для консоли, журнала событий или какого-либо файла.

Пример:

public static int main(String[] args)
{
    try 
    {
       // other code

       return 0;
    }
    catch (Exception ex)
    {
       Console.Error.WriteLine(ex);

       // Save to file, in case this is an application that runs in the background
       // Make sure the directory exists and is writable though.
       System.IO.File.WriteAllText("C:\\TEMP\\Exception.txt", ex.ToString());

       return 1;
    }
}
0 голосов
/ 19 сентября 2011
  1. попытка перехвата исключения и ведение журнала
  2. попытка использования AppDomain.CurrentDomain.UnhandledException для перехвата непредвиденного исключения и ведения журнала.
...