ASP.NET MVC - 从“未连接”类访问会话信息

时间:2013-03-24 11:46:42

标签: asp.net asp.net-mvc asp.net-mvc-3

我正在使用XSockets。现在,从xsocket控制器内部,我需要访问我的用户数据。我试过这样做:

public class SocialsController : XSocketController, Controller

但这是不允许的。有没有办法让我访问SocialsController中的所有会话数据?

1 个答案:

答案 0 :(得分:2)

您无法在XSockets中使用ASP.NET会话,因为服务器在IIS之外运行。 将来你可以,但不能在当前版本中使用。

您在XSockets中创建的每个连接都有自己连接的控制器实例。所以我们在控制器上有状态,而常规HTTP / ASP.NET MVC没有状态..这就是为什么他们需要会话。

那么如果在XSockets中刷新/更改页面怎么办? 你将失去状态,因为控制器会“死”...... 但是,XSockets有自己的SessionStorage,因此您可以在服务器上为特定客户端存储数据。可以从JavaScript和C#访问此SessionStorage。

<强> C# 存储Person对象的示例,但它可以是任何

//Save in storage (will be there even if you disconnect and then reconnect)
this.StorageSet("me",new Person{Name="Uffe", Age=35});
//Get from storage (casting to correct type).
var p = (Person)this.StorageGet("me");

<强>的JavaScript

//设置,但检查http://xfiddle.net/XFiddle/是否有get,set,delete,getall

var myStorageObject = { Key: 'foo', Value: $("#storeValue").val() };
ws.trigger(XSockets.Events.storage.set, myStorageObject);

此致 Uffe