2

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

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

4

2 回答 2

5

是的,即使使用 sql server 或 oracle,您也可以自定义类提供程序 Session。只需从模型中的一个类继承,该类继承自 SessionStateStoreProviderBase 并实现他发送的所需方法,请在此处查看所需方法的列表。

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

祝你好运。

于 2014-07-30T13:10:14.340 回答
-3

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

简短的回答是肯定的,你可以,但它是在重新发明轮子。您是否需要将数据用于其他用途或自行编辑它?我倾向于为此使用单独的过程。您将为自己创建一些工作,如果您以后需要查看它,最好在 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 作为文件名将其安全地保存到磁盘某个位置,以保持其唯一性。

于 2012-03-15T13:03:14.593 回答