asp.net mvc在一个操作完成之前无法加载另一个操作

时间:2014-07-22 09:58:28

标签: asp.net-mvc

我想定义一个类" SessionContext"追踪每位客人的具体行动。该课程的定义如下:

public class SessionContext
{
    public string Name { get; set; }
}

在我的控制器中,我有一个基本控制器,每个控制器都继承它。代码如下:

public class BaseController : Controller
{
    private static Dictionary<string, SessionContext> _sessionDic 
        = new Dictionary<string, SessionContext>();

    public static Dictionary<string, SessionContext> SessionDic
    {
        get { return _sessionDic; }
        set { _sessionDic = value; }
    }
}
public class HomeController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult Test()
    {
        System.Threading.Thread.Sleep(30000);
        return View();
    }
}

在我的Global.asax中,我添加了两个事件:

 protected void Session_Start(object sender, EventArgs e)
    {
        Dictionary<string, SessionContext> sessionDic = BaseController.SessionDic;
        string sessionId = Session.SessionID;
        if (!sessionDic.Keys.Contains(sessionId.Trim()))
        {
            sessionDic.Add(sessionId, new SessionContext());
        }
    }
    protected void Session_OnEnd(object sender, EventArgs e)
    {
        Dictionary<string, SessionContext> sessionDic = BaseController.SessionDic;
        string sessionId = Session.SessionID;
        if (sessionDic.Keys.Contains(sessionId))
        {
            sessionDic.Remove(sessionId);
        }
    }

那是我的全部代码。我遇到的问题是: 当我在浏览器中打开一个标签并访问Home / Test时,它会按照我的意图等待30秒。 但在30年代,我无法访问其他行动(例如/ Home / Index)。我无法弄明白,有人能告诉我为什么会出现这种情况吗?

0 个答案:

没有答案