2

ASP.NET 4.5 でアプリケーションを開発しています。次のようなデリゲート関数を作成しました。

private delegate void CounterDelegate(List<int> temp, int id);
private CounterDelegate sfd;


public Foo(){
  sfd = new CounterDelegate(this.Counter);
}

私はそのような関数を呼び出します:

 sfd.BeginInvoke(temp, id, null, null);

目標は、非同期関数内で非同期方式で「カウンター」関数を実行することです。これはこれでうまくいきます。関数は、Web サービス内の関数から呼び出されます。私の問題はセッションにあります。

私の機能:

[WebMethod(EnableSession = true)]
public  void Counter(List<int> temp, int id)
{
   if (Session["user"] == null)
   {
      // do something
   }
}

問題は、Session が null に等しく、そのように初期化しようとすると、次のようになることです。

 Session["user"] = new List<int>();

NullReferenceException がユーザー コード 例外によって処理されませんでした。私はそれをtry catchに入れてcatchブロックで初期化しようとしましたが、問題は関数を離れるため、その後コードを実行し続けることができないことです。

Webサービスの通常の非非同期関数で行ったかのように、セッション変数を初期化して使用可能にする方法はありますか?

4

0 に答える 0