我使用MVC 5单的主分支了,我怀疑是单声道有失踪实施以下属性:只读会话状态MONO
[SessionState(SessionStateBehavior.ReadOnly)]
我试图来装饰选择的两个具有属性和Thread.Sleep(5000)的控制器。结果表明,这两个请求是按顺序执行的,而不是像预期的那样。
为了给出一个完整的信息,我一直在使用mod_mono(也是master分支)。
对于单个会话你有并行执行经验吗?
谢谢!
我使用MVC 5单的主分支了,我怀疑是单声道有失踪实施以下属性:只读会话状态MONO
[SessionState(SessionStateBehavior.ReadOnly)]
我试图来装饰选择的两个具有属性和Thread.Sleep(5000)的控制器。结果表明,这两个请求是按顺序执行的,而不是像预期的那样。
为了给出一个完整的信息,我一直在使用mod_mono(也是master分支)。
对于单个会话你有并行执行经验吗?
谢谢!
请注意,某些Web服务器,如Apache,可能会阻止来自同一用户比在一定circunstances图像其他资源的并发请求。如果这是你的情况,让我知道给你提供更多的细节。
我有同样的问题,与fastcgi-mono-server4 + nginx和xsp4独立,所以我得出结论,它必须是一个错误(或一些未实现的功能)在这个版本的单声道(debian分布3.8-2)。
我在web.config中解决了设置<sessionState mode="Off" />
的问题,并在服务器端使用System.Runtime.Caching.MemoryCache
处理会话,并使用由GUID(用于会话ID仿真)和实际字符串组成的密钥。
设置我在我的控制器基类
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(HttpContext.Request.Cookies["sid"] == null
&& HttpContext.Response.Cookies["sid"] == null) {
HttpCookie htsid = new HttpCookie("sid", Guid.NewGuid().ToString());
HttpContext.Response.Cookies.Set(htsid);
}
//...
}
写此覆盖的饼干和我添加了一个小帮手,以获得相同的基类
internal string sid {
get {
HttpCookie htk = HttpContext.Request.Cookies["sid"];
if(htk == null) {
htk = HttpContext.Response.Cookies["sid"];
}
return htk == null ? null : htk.Value;
}
}
这解决了会话ID我单声道问题,我确实需要来自同一个会话的并发连接,我需要保持每个会话的状态值,但是您的里程可能会有所不同。
这就是参考,我使用这个枚举作为属性。请问如何调试Apache服务器和运行asp.net服务器(mod_mono)之间的通信?我希望更多的细节。 – marxin 2014-12-04 20:24:18