Tracesource и ASP.NET: работает для веб -приложений, а не на веб -сайтах
-
27-10-2019 - |
Вопрос
Я добавляю функциональность отслеживания на веб -сайт ASP.NET, поэтому я решил расследовать Tracesource создав пару прототипов; Проект веб -приложения и проект веб -сайта.
Я использую аналогичный web.config для каждого проекта для регистрации трассов в журнале событий Windows:
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
</system.web>
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="HelloWorld">
<listeners>
<add name="eventlogListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="eventlogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="My Source" />
</sharedListeners>
</system.diagnostics>
</configuration>
Я просто начинаю со следующего базового следа:
private static TraceSource _ts = new TraceSource("HelloWorld", SourceLevels.All);
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_ts.TraceEvent(TraceEventType.Information, 10, "Greetings from OnLoad.");
}
С помощью проекта веб -приложения я вижу трассировку, созданную в журнале событий. Однако с помощью проекта веб -сайта я не могу.
Требуются ли дополнительные шаги (например: настройки Web.Config, разрешения и т. Д.) Для проектов веб -сайта для использования Tracesource?
Решение 2
После некоторой проб и ошибок, по -видимому, в Интернете требуется узел Codem Compilers, но я не совсем уверен, почему.
Другие советы
Причина этого заключается в том, что методы трассировки составляются .NET только в том случае, если константа трассировки определяется как часть компиляции. В проекте веб -сайта способ сделать это состоит в том, чтобы включить конфигурацию компилятора в ваш файл web.config, например:
<system.codedom>
<compilers>
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.50727.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
compilerOptions="/d:TRACE"
warningLevel="1" />
</compilers>
</system.codedom>
Обратите внимание на опцию компилятора «/D: Trace», которая позволяет константу трассировки при составлении вашего кода (C# в этом примере).