我在ASP.NET Web应用程序中使用Forms身份验证,并以特定形式使用FileSystemWatcher。
它有两个事件watcher_Changed
和watcher_Created
。事件正在被正确调用。一旦事件被触发,HttpContext.Current
变为空。
我不明白会话是否被FileSystemWatcher
清除。谁可以帮我这个事?代码如下。
void watcher_Created(object sender, FileSystemEventArgs e)
{
watcher_Event(sender, e);
}
private void watcher_Event(object sender, FileSystemEventArgs e)
{
try
{
if (getUserName() != null)
{
//Some Code
}
}
}
public string getUserName()
{
FormsIdentity useridentity = (FormsIdentity)HttpContext.Current.User.Identity; //Exception is thrown here. ("Object reference not set to instance of an object")
FormsAuthenticationTicket userticket = useridentity.Ticket;
string username = userticket.Name;
return username;
}
感谢。
答案 0 :(得分:1)
FileSystemWatcher.Changed
事件本质上是异步的。这意味着在服务HTTP请求并且会话关闭后,可能会引发。如果要将FileSystemWatcher
的事件与导致其创建的用户相关联,则需要明确地维护它 - 例如,通过将每个FileSystemWatcher
映射到用户名的字典。 / p>