代码之家  ›  专栏  ›  技术社区  ›  lance

ASP.NET事件日志:填充“用户”字段?

  •  0
  • lance  · 技术社区  · 14 年前

    我正在从一个ASP.NET webapp写入应用程序事件日志。如何填充日志项的“用户”字段?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    7 年前

    记录在事件日志项中的用户是在进行事件日志记录调用时“拥有”线程的用户(从安全角度)。在ASP.Net应用程序中(默认情况下),这将是运行ASP.Net的帐户。

    您可以使用windows模拟更改线程在哪个用户下运行。有关SO的示例问题,请参见:

    Windows Impersonation from C#

    这是一个非常重要的领域,而不是简单地向事件日志调用提供用户详细信息的情况。

        2
  •  0
  •   MAW74656    14 年前

    我从Asp.net配置文件中获取了用户名。然后我把它传给方法。在这里,我已经在Global.asax中使用过它,但同样的原理应该在其他地方工作。

    String username = User.Identity.Name;
                String pageRequested = ((HttpApplication)sender).Request.Path;
    
                error = Server.GetLastError().GetBaseException();
    
                String message = "ERROR MESSAGE: " + error.Message +
                                    "\nINNER EXCEPTION: " + error.InnerException +
                                    "\nSOURCE: " + error.Source +
                                    "\nFORM: " + Request.Form.ToString() +
                                    "\nQUERYSTRING: " + Request.QueryString.ToString() +
                                    "\nTARGETSITE: " + error.TargetSite +
                                    "\nSTACKTRACE: " + error.StackTrace +
                                    "\nNCLWEB USERNAME: " + username +
                                    "\nDATESTAMP: " + DateTime.Now;
    
                System.Diagnostics.EventLog.WriteEntry("NCLWeb", message, System.Diagnostics.EventLogEntryType.Error);