在ASP.NET MVC中实现自定义会话状态提供程序

时间:2012-03-15 12:55:23

标签: asp.net-mvc sql-session-state session-state-provider

我正在为我的ASP.NET MVC应用程序实现自定义会话状态提供程序。我的要求是我将会话数据存储为xml在Sql server中的自定义表中。

我可以使用现有的 sql会话状态提供程序(覆盖某些方法),还是通过实现抽象类SessionStateStoreProviderBase从头创建?

2 个答案:

答案 0 :(得分:3)

是的,您可以使用sql server或oracle自定义类提供程序Session。只需继承模型中继承自SessionStateStoreProviderBase的类并实现他发送的所需方法,检查所需方法列表here

如果您想使用示例,请参阅here。 此示例使用odbc但只是将访问类替换为OdbcConnection到SqlConnection,反之亦然。

祝你好运。

答案 1 :(得分:-2)

为什么您不仅仅使用SQL服务器作为州提供商?你可以在配置中设置它,这会自动发生,那么SQL服务器会将数据存储为序列化的二进制数据并有效地检索它吗?

简短的回答是肯定的,你可以,但它重新发明了轮子。您是否需要将数据用于其他任何事情或自己编辑过程?我倾向于使用单独的过程。您将为自己创建一些工作,并且如果您稍后需要查看它,最好在sessiopn中设置它时保存xml属性。

使您的xml文档成为会话对象

Session["MyCustomXml"] = mydoc;

var mydoc = Session["MyCustomXml"] as XmlDocument;

然后使用以下配置,以便它存储在sql server中。

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />

如果您需要稍后查看,只需将SessionId作为文件名安全地保存到磁盘somwhere,以保持其唯一性。