Why is HTTPContext.Current.Session null using SignalR 2.x libraries in a ASP .Net MVC application?

爱⌒轻易说出口 提交于 2019-12-10 14:55:28

问题


I'm attempting to migrate our ASP.Net MVC application from using Signal R1.x tgo SignalR 2.x. I just found issue which will certainly cause us problems in our quest to move forward.

Our web application is MVC based and makes heavy use of the HttpContext.Current.Session variable. When running with SignalR 1.x, everything is fine and dandy with Session.

When we upgraded to SignalR 2.x, Session was suddenly null.

I did a little googling and found the following links regarding the issue: HTTPContext.Current.Session is nul in SignalR...need alternate to Session state while using SignalR

Further investigation revealed the following tidbit of information: 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.

I would imagine that this will break a great many ASP .Net MVC based applications. Is there any workaround for this?

Is this truly by design, or is it a result of using oWin::>Startup::Configuration(){app.MapSignalR();} to initiate signalR in 2.x?

If possible, I’d like to figure this out and if the solution is not so painful, they will still consider moving to 2.x.

Thoughts?


回答1:


Session state is not supported from within SignalR as it interferes with the processing of simultaneous requests from the same user, and is not supported from WebSockets requests. In 2.0 the property is null because SignalR requests are handled before the session state module is initialized. This was a change from 1.0 in how SignalR is hosted inside of System.Web based ASP.NET applications (in 1.0 it used a route in the ASP.NET routes table, in 2.0 it uses the OWIN hosting module provided by Microsoft.Owin.Host.SystemWeb).

Note this only affects the use of session from within your SignalR classes (Hubs, etc.), not the rest of your application.



来源:https://stackoverflow.com/questions/22023544/why-is-httpcontext-current-session-null-using-signalr-2-x-libraries-in-a-asp-ne

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!