C# ASP.NET事件日志:填充";“用户”;领域

C# ASP.NET事件日志:填充";“用户”;领域,c#,asp.net,field,event-log,C#,Asp.net,Field,Event Log,我正在从ASP.NET Web应用程序写入应用程序事件日志。如何填充日志项的“用户”字段?事件日志项中记录的用户是在进行事件日志调用时“拥有”线程(从安全角度)的用户。在ASP.Net应用程序中(默认情况下),这将是运行ASP.Net的帐户 您可以使用windows模拟更改线程在哪个用户下运行。有关SO的示例问题,请参见: 这是一个非常重要的领域,而不是简单地向事件日志调用提供用户详细信息。我从Asp.net配置文件中获取了用户名。然后我将其传递到方法中。在这里,我在Global.asax中使

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

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

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


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

我从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);

关于为什么我可能在ASP.NET webapp创建的所有条目的用户字段中看到“N/A”(不使用模拟)的任何解释?当线程被标识为在系统帐户下运行时,用户显示为“N/A”。我看到了。看到“N/A”值让我觉得我可以在该字段中输入一个自由格式的文本值(如果我知道怎么做的话)。阅读上面Zhaph提到的重复问题,我发现它必须是框中的实际用户(现在有意义了)。这不会填充用户字段吗?我遗漏了什么吗?这会将用户名添加到消息文本中,但不会填充事件日志中的“用户”字段。@lance-不,你没有遗漏任何内容,我误解了这个问题。虽然,现在我查看了该方法,但似乎没有办法将用户名作为参数传递。发现了此重复项: