【问题标题】:Tracing for an ASP.NET application does not work in production server跟踪 ASP.NET 应用程序在生产服务器中不起作用
【发布时间】: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


【解决方案1】:

可能是 ACL 问题。

检查 C:\inetpub\wwwroot\website 上的安全设置,并将它们与运行 MVC 应用程序的用户进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多