完全替換ASP.NET的會(huì)話ASP.NET會(huì)話對(duì)于傳統(tǒng)的WebForms應(yīng)用程序來(lái)說(shuō)似乎是完美的,但是對(duì)于現(xiàn)代Ajax和MVC應(yīng)用程序來(lái)說(shuō),它們做了一些嚴(yán)重的問(wèn)題。具體來(lái)說(shuō),只有3種方法可以訪問(wèn)ASP.NET提供程序:鎖定讀寫(xiě)(默認(rèn))-會(huì)話被鎖定在AcquireRequestState射擊直到ReleaseRequestState火災(zāi)。如果瀏覽器同時(shí)發(fā)出3個(gè)請(qǐng)求,它們將在服務(wù)器上排隊(duì)。這是MVC 2中唯一的選擇,但是MVC 3允許.非鎖定只讀-會(huì)話沒(méi)有鎖定,但無(wú)法保存到這似乎是不過(guò)不可靠,因?yàn)橛行┳x取似乎再次鎖定會(huì)話。會(huì)話禁用-任何讀取或?qū)懭霑?huì)話的嘗試都會(huì)引發(fā)異常。然而,使用現(xiàn)代MVC應(yīng)用程序,我有很多Ajax事件同時(shí)發(fā)生-我不希望它們成為服務(wù)器上的隊(duì)列,但我確實(shí)希望它們能夠?qū)懭霑?huì)話。我想要的是第四種模式:臟讀,最后寫(xiě)贏我認(rèn)為(很高興得到糾正),唯一能做到這一點(diǎn)的方法就是完全取代ASP.NET的會(huì)話。我可以寫(xiě)我的自己的提供者,但是ASP仍然會(huì)用它所支持的3種模式之一來(lái)調(diào)用它。是否有任何方法使ASP.NET支持樂(lè)觀并發(fā)?這就讓我用一個(gè)新的類(lèi)替換了對(duì)會(huì)話的所有調(diào)用,這個(gè)類(lèi)基本上是做同樣的事情,但不鎖定-這是一種痛苦。我希望盡可能多地保留當(dāng)前會(huì)話內(nèi)容(最重要的是,在各種日志中保留會(huì)話ID),并盡可能減少代碼替換量。有什么辦法嗎?理想情況下我想HttpContext.Current.Session指向我的新類(lèi),但不鎖定任何請(qǐng)求。有人做過(guò)這樣的事嗎?似乎奇怪的是,對(duì)于所有的AJAXey MVC應(yīng)用程序,這是一個(gè)新的問(wèn)題與ASP。
完全替換ASP.NET的會(huì)話
當(dāng)年話下
2019-07-05 15:14:27