我正在用 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 服务中的常规非异步函数中完成它一样?