2014-02-25 134 views
5

我試圖從使用Signal R1.x tgo SignalR 2.x遷移我們的ASP.Net MVC應用程序。我剛剛發現問題,這肯定會導致我們在向前邁進時遇到問題。爲什麼HTTPContext.Current.Session在ASP .Net MVC應用程序中使用SignalR 2.x庫?

我們的Web應用程序是基於MVC的,並大量使用HttpContext.Current.Session變量。 使用SignalR 1.x運行時,一切都很好,並且可以在Session中使用。

當我們升級到SignalR 2.x時,Session突然無效。

我做了一些谷歌搜索,發現關於這個問題下面的鏈接: HTTPContext.Current.Session is nul in SignalR...need alternate to Session state while using SignalR

進一步調查顯示以下信息珍聞: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting

HTTPContext.Current.Session is null 
This behavior is by design. SignalR does not support the ASP.NET session state, 
since enabling the session state would break duplex messaging. 

我會想象這將打破許多ASP .Net MVC應用程序。 有沒有解決這個問題的方法?

這是真正的設計,還是它使用oWin ::> Startup :: Configuration(){app.MapSignalR();}在2.x中啓動signalR的結果?

如果可能的話,我想弄清楚,如果解決方案不是那麼痛苦,他們仍然會考慮轉向2.x.

想法?

回答

6

在SignalR中不支持會話狀態,因爲它會干擾來自同一用戶的同時請求的處理,並且不受WebSockets請求支持。在2.0中,該屬性爲空,因爲SignalR請求在會話狀態模塊初始化之前處理。這是SignalR託管在基於System.Web的ASP.NET應用程序內部的1.0版本(1.0版本中它在ASP.NET路由表中使用了一個路徑,在2.0版本中它使用了由Microsoft.Owin提供的OWIN託管模塊。 Host.SystemWeb)。

請注意,這僅影響從您的SignalR類(集線器等)中使用會話,而不會影響應用程序的其餘部分。

+3

如何解決此問題 – SandhiyaSomeshwaran

相關問題