C# 在多用户系统的情况下,如何获取特定于用户的异常详细信息?
假设一次在一个应用程序中有多个用户在线。由于某种原因,4个用户出现了异常。由于我们在global.asax文件中实现了全局异常处理,因此我们向所有用户显示一个自定义错误页面,并使用以下代码记录错误:C# 在多用户系统的情况下,如何获取特定于用户的异常详细信息?,c#,asp.net,asp.net-mvc,exception-handling,C#,Asp.net,Asp.net Mvc,Exception Handling,假设一次在一个应用程序中有多个用户在线。由于某种原因,4个用户出现了异常。由于我们在global.asax文件中实现了全局异常处理,因此我们向所有用户显示一个自定义错误页面,并使用以下代码记录错误: var currentException = Server.GetLastError(); logger.LogDetails(currentException); // some logging code Server.ClearError(); 用户1收到被零除的异常 用户2获得无效的强制转换
var currentException = Server.GetLastError();
logger.LogDetails(currentException); // some logging code
Server.ClearError();
var currentException = Server.GetLastError();
var user = HttpContext.Current.User;
logger.LogDetails(currentException, user); // some logging code
Server.ClearError();
您可以在登录之前获取该用户,该用户将是错误的当前用户
您可以在登录之前获取该用户,该用户将是错误的当前用户 您似乎担心GetLastError会返回上次发生的任何错误,而不管用户是谁,如果四个用户出现错误,可能会出现串扰,他们可能会看到彼此的错误(或者日志代码可能会用错误的错误记录错误的用户名)。事实并非如此 是特定于会话的,或者更准确地说,是特定于线程的。它将只返回由从当前线程接收响应的用户触发的错误 GetLastError函数 检索调用线程的最后一个错误代码值。最后一个错误代码以每个线程为基础进行维护。多个线程不会覆盖彼此的上一个错误代码
因此,只要使用Steve的答案,您就可以开始了。您似乎担心GetLastError会返回上次发生的任何错误,而不管用户是谁,如果四个用户出现错误,可能会出现串扰,他们可能会看到彼此的错误(或者日志代码可能会用错误的错误记录错误的用户名)。事实并非如此 是特定于会话的,或者更准确地说,是特定于线程的。它将只返回由从当前线程接收响应的用户触发的错误 GetLastError函数 检索调用线程的最后一个错误代码值。最后一个错误代码以每个线程为基础进行维护。多个线程不会覆盖彼此的上一个错误代码
所以只要使用Steve的答案,你就可以开始了。所有4个,4次,然后我如何获得需要记录的特定于用户的异常详细信息?我想你可以检查httpcontext,看看哪个用户是它,但仍然是服务器。GetLastError不会返回非特定于当前用户的随机异常。我真的不理解你的问题。上下文将是当前用户,否则您将如何将正确的用户重定向到正确的错误屏幕所有4个,4次然后我如何获得用户特定的异常详细信息,我需要记录吗?我想您可以检查httpcontext以查看哪个用户是它,但仍然是服务器。GetLastError不会返回非特定于当前用户的随机异常。我不太理解您的问题。上下文将是当前的用户,或者以其他方式,你将如何将正确的用户重定向到正确的错误屏幕?所有你已经共享的链接都与C++相关,在我的例子中是C++。因此,只想确认C++中的相同或服务器,GETLASTReNORE()是否不同于C++的GETLASTORKECT函数?因此,只想确认C中的相同或服务器,GETLASTReNORE()是否不同于C++的GETLASTORKECT函数?