3

ASP.NET Web アプリケーションでフォーム認証を使用し、特定のフォームで FileSystemWatcher を使用しています。

と の 2 つのイベントがwatcher_Changedありwatcher_Createdます。イベントは正しく呼び出されています。イベントが発生すると、HttpContext.Currentは null になります。

によってセッションがクリアされているかどうかわかりません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 要求が処理され、セッションが閉じられた後に発生する可能性があることを意味します。FileSystemWatcherのイベントをその作成の原因となったユーザーに関連付ける場合は、これを明示的に維持する必要があります。たとえば、それぞれFileSystemWatcherをユーザー名にマップする辞書を使用します。

于 2012-06-08T09:49:36.737 に答える