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 服务中的函数调用的。我的问题是 Sessions。

我的功能:

[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