【发布时间】:2017-11-20 13:01:52
【问题描述】:
我需要跟踪我的 MVC 5 应用程序的执行,所以我将其添加到 web.config 文件中:
<system.diagnostics>
<trace autoflush="true" indentsize="4" />
<sources>
<source name="mySource" switchValue="Information" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="sdt" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "C:\inetpub\wwwroot\website\trace.log" />
</listeners>
</source>
</sources>
</system.diagnostics>
在代码中,我添加了:
public static TraceSource _trace = new TraceSource("mySource");
_trace.TraceInformation("Tracing messages");
问题是生产服务器中没有任何反应。甚至没有创建日志文件。
奇怪的是,它确实可以在我的开发 PC 中使用,使用 Release 构建。该网站是在 TRACE 常量为 ON 的情况下编译的。
生产服务器具有 IIS 8.5,在我的 PC 中使用 IISEXPRESS。这是唯一的区别。
有什么帮助吗?
【问题讨论】:
-
可能是 ACL 问题。您是否尝试将日志文件位置更改为
c:\temp\trace.log之类的位置?或者查看 C:\inetpub\wwwroot\website 上的安全设置并将它们与运行 MVC 应用程序的用户进行比较? -
你是对的...我已将 IIS_APPPOOL 用户添加到具有完全控制权的文件夹中,并保存了跟踪
-
您不应该真正让 IIS 用户完全控制您的 Web 应用程序的根目录 - 这会使网站更容易受到攻击。最重要的是,您正在将日志文件写入可公开访问的位置。相反,您应该写入一个子文件夹或您的应用程序,并且只让 IIS 用户控制它(或者更好但只读取/写入/修改),或者更好的是只允许在您的 Web 根目录之外写入并写入日志文件。
-
是的。我在应用程序中设置了一个日志子文件夹并将权限设置在那里。我知道允许完全控制整个应用程序是不好的
标签: c# asp.net trace tracesource svctraceviewer