3

我在我的 ASP.NET Web 应用程序中使用表单身份验证,并在特定表单中使用 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;
}

谢谢。

4

1 回答 1

1

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

于 2012-06-08T09:49:36.737 回答