| Четверг, 11 апреля, 2013
Метки: ASP.NET Web API Комментарии: 0
ASP.NET предоставляет два встроенных механизма ведения журнала, поиска и устранения ошибок. Обработка ошибок может показаться довольно сложным и запутанным занятием без применения этих двух механизмов, особенно если ошибки происходят во время выполнения до начала работы обработчиков сообщений HTTP и контроллеров.
Первый механизм – это правила обработки ошибок (error policy). Настроить правила обработки ошибок можно в свойстве IncludeErrorDetailPolicy конфигурационного объекта HTTPConfiguration. Это свойство имеет тип перечисления enum и указывает среде Web API, как обрабатывать исключения. Проинициализировать свойство можно, например, в Global.asax:
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never;
Значения могут быть такие:
Когда происходит ошибка, Web API проверяет значение этого свойства, и, соответственно, возвращает или нет в ответном сообщении детали исключения. Например, если указана опция Always, то в ответное сообщение Web API добавит сериализованные детали исключения.
Второй механизм – трассировка (tracing). Трассировка – это сервис, который внедряется в приложение, как часть объекта конфигурации. Встроенная реализация ничего не делает.
public static void Register(HttpConfiguration config) { config.Services.Replace(typeof(ITraceWriter), new MyTracer()); }
Поэтому нужно написать собственную реализацию интерфейса ITracerWriter, которую Web API будет использовать для трассировки. Это основной механизм трассировки, Web API будет использовать его везде и не только для ошибок.
public class MyTracer : ITraceWriter { public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction) { TraceRecord rec = new TraceRecord(request, category, level); traceAction(rec); WriteTrace(rec); } protected void WriteTrace(TraceRecord rec) { var message = string.Format("{0};{1};{2}", rec.Operator, rec.Operation, rec.Message); System.Diagnostics.Trace.WriteLine(message, rec.Category); } }
Copyright © CodeHint.ru 2013-2025 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля