ASP.NET MVC прослеживающие проблемы

Вопрос

Как я получаю ASP.NET, который трассировочная информация MVC, чтобы быть последовательной для трассировки в странице произвела как trace.axd? Я могу просто пропускать что-то очевидное, вызовите его, если Вы видите его.

Вводная информация для традиционного ASP.NET

Таким образом, назад в регулярные дни 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>
...
<system.web>
    <trace enabled="true" pageOutput="true" writeToDiagnosticsTrace="true"/>
...
<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" warningLevel="1" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

Затем Вы могли добавить следующее на своих страницах:

HttpContext.Current.Trace.Write("Write Trace Here");
or
System.Diagnostics.Trace.Write("Write Trace Here");

И если бы Вы поражаете свою страницу (т.е. localhost:61115/Default.aspx), Вы получили бы хорошую таблицу трассировки со своей пользовательской трассировкой, встроенной с событиями страницы asp.net:

aspx.page Begin Load 0.00343 0.000357
test 0.00462176 0.001192 
aspx.page End Load 0.00526904 0.000018 

Удар localhost:61115/Trace.axd? id=0 сохранил бы те же результаты трассировки как выводы трассировки в странице.

Вводная информация на ASP.NET MVC

К сожалению, я не могу заставить это работать в ASP.NET MVC 2.0 по причинам, неизвестным мне. Я использую подобные web.config настройки в качестве упомянутых выше. То, что интересно, - то, что я могу только заставить трассировки частично работать. Таким образом, если я совершил нападки, функциональность эквивалентная страница по умолчанию (иначе индексируют метод действия моего homecontroller), я вижу все традиционные события страницы asp.net, такие как preinit, предварительная нагрузка, предварительный рендеринг, и т.д. но никакое пользовательское сообщение трассировки с помощью любой Системы. Диагностика, ни HttpContext. Трассировка. Записать.

Однако, если я обращаюсь к Trace.axd? файл id=0, меня встречают моими пользовательскими сообщениями трассировки, но никаким выводом трассировки события страницы ASP.NET. Я должен пропускать что-то здесь, которое вызывает это несоответствие в трассировочной информации, которую я вижу в странице по сравнению с trace.axd (вспомните что традиционные выводы asp.net, идентичные в странице по сравнению с trace.axd выводами). Я действительно хотел бы иметь свою трассировочную информацию в странице, согласовывающуюся с trace.axd (или путем удаления традиционных событий страницы asp.net или других средств). Есть ли что-то, что я пропускаю?

19
задан Jason Berkan 12 August 2010 в 15:29
поделиться

2 ответа

Вместо использования HttpContext.Current.Trace или System.Diagnostics.Trace попробуйте использовать Controller.HttpContext.Trace ?

4
ответ дан 30 November 2019 в 04:33
поделиться

Цитата непосредственно из книги "MVC 2 в действии":

Когда вы вызывали Trace.Write() в Web Forms, вы взаимодействовали с Класс трассировки контекста. Это существует на ваш ViewPage в ASP.NET MVC, но это не там, где вы хотели бы написать отслеживание заявлений. К тому времени, когда вы передал эстафету взгляду, там нет логики, которая вам нужна проследить. Вместо этого вы хотите отслеживать логика, заложенная в вашем контроллеры. Вы можете попытаться использовать класс TraceContext в вашем контроллер, но эти операторы не будут когда-нибудь попасть в список сообщений в журнале трассировки (на вашем страницу или на Trace.axd). Вместо этого вы можно использовать System.Diagnostics.Trace и настроить свои собственные TraceListeners для проверить активность в вашем контроллеры. Кроме того, вы можете использовать более зрелую регистрацию фреймворк, такой как log4net или NLog:

вы отлаживаете приложения ASP.NET MVC. так же, как и любой .NET применение. Трассировка, однако, не предложить столько же для MVC. Вместо этого вы можно опереться на встроенный TraceListeners в .NET или использовать хорошая библиотека ведения журналов, подобная этим упомянутый ранее. Другой аспект ведение журнала ошибок — это мониторинг работоспособности.

Извините, что не ответила своими словами, но я думаю, что это объяснение верно :)

9
ответ дан 30 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: