2009-07-02 3 views
4

Я пытаюсь отправить исключение, пойманное на контроллере, на страницу trace.axd, но я не могу понять это. У меня естьasp.net mvc exceptions tracing

<trace enabled="true" localOnly="false" mostRecent="true" pageOutput="false" />

в web.config, и моя inteded реакция на исключение составляет

catch (Exception e) 
{ 
    ViewData["error"] += "Is not number!"; 
    Trace.TraceError(e.ToString()); 
    Trace.TraceError(e.StackTrace); 
    return View(); 
} 

Однако, я не могу найти любого из этих строк на любом Trace.axd странице. Итак, как их получить?

Вторичный, я хочу спросить, как отключить трассировку, а не проблемы (то есть те, которые я лично не посылаю с помощью какого-либо метода), поскольку они просто наводняют мой след и удаляют эти случайные отчеты об ошибках раньше, чем кто-то замечает их.

Заранее спасибо.

ответ

4

Я предполагаю ваша проблема заключается в том, что вы используете System.Diagnostics.Trace класс вместо механизма трассировки ASP.NET и он не установлен для маршрутизации сообщений трассировки в trace.axd. Попробуйте использовать объект Controller.HttpContext.Trace для отслеживания.

Кроме того, попробуйте маршрутизации System.Diagnostics.Trace в ASP.NET трассировку, добавив следующий фрагмент кода в web.config:

<system.diagnostics> 
    <trace> 
    <listeners> 
     <add name="WebPageTraceListener" 
      type="System.Web.WebPageTraceListener, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </listeners> 
    </trace> 
</system.diagnostics> 
+0

Великий, он работает, спасибо. Я просто хочу спросить, знаете ли вы также решение моего второго вопроса? – Trimack

+0

@Trimack: взгляните на класс TraceSwitch. Это может помочь отключить различные категории сообщений трассировки с помощью параметра конфигурации: http://msdn.microsoft.com/en-us/library/system.diagnostics.traceswitch.aspx –