| Четверг, 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)Калькулятор инвест-портфеля