在C#中使用FileSystemWatcher时HttpContext.Current为null

时间:2012-06-08 09:39:36

标签: c# filesystemwatcher

我在ASP.NET Web应用程序中使用Forms身份验证,并以特定形式使用FileSystemWatcher。

它有两个事件watcher_Changedwatcher_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;
}

感谢。

1 个答案:

答案 0 :(得分:1)

FileSystemWatcher.Changed事件本质上是异步的。这意味着在服务HTTP请求并且会话关闭后,可能会引发。如果要将FileSystemWatcher的事件与导致其创建的用户相关联,则需要明确地维护它 - 例如,通过将每个FileSystemWatcher映射到用户名的字典。 / p>