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

我可以使用现有的 sql会话状态提供程序 (重写一些方法)或者我必须通过实现抽象类从头开始创建 SessionStateStoreProviderBase?

有帮助吗?

解决方案

为什么不使用SQL server作为状态提供程序?您可以在配置中设置它,这会自动发生,然后SQL server将数据存储为序列化的二进制数据并有效地检索它?

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

使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" 
    />

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

其他提示

是的,即使使用sql server或oracle,您也可以自定义类提供程序会话。只是从你的模型中的一个类继承继承自sessionstatestoreproviderbase并实现他发送的所需方法,检查所需方法列表 这里.

如果要使用示例,请参阅 这里.此示例使用odbc,但只需将access类替换为OdbcConnection到SqlConnection,反之亦然。

祝你好運!.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top