我使用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