Pergunta

Eu estou trabalhando na implementação de um personalizado provedor de estado de sessão para o meu ASP.NET aplicativo MVC.A minha exigência é que eu tenho para armazenar os dados da sessão como xml em uma tabela personalizada no Sql server.

Posso usar o existente estado de sessão sql fornecedor (substituir alguns métodos) ou tenho de criar a partir do zero por implementar a classe abstrata SessionStateStoreProviderBase?

Foi útil?

Solução

Por que você não está apenas usando o SQL server como seu provedor de estado?Você pode definir isso no config e isso acontece automaticamente, em seguida, o SQL server armazena os dados serializados dados binários e eficiente para recuperá-lo?

A resposta curta é sim, você pode, mas é re-inventar a roda.Você precisa usar os dados para qualquer outra coisa ou editar-se fora do processo?Eu estaria inclinado a usar um processo separado para isso.Você vai criar um pouco de trabalho para se fazer isso e você seria melhor apenas para salvar o xml de propriedade somwhere quando você definir em sessiopn se você precisa olhar para ele mais tarde.

Faça o seu documento xml em um objeto de sessão

Session["MyCustomXml"] = mydoc;

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

em seguida, use a seguinte config então é armazenado no sql server.

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

Se você precisar de olhar mais tarde, basta salvá-lo no disco somwhere com segurança com o SessionId como o nome do arquivo para mantê-lo único.

Outras dicas

sim, você pode personalizar o seu provedor de classe Sessão, mesmo com o sql server ou oracle.Apenas herdar de uma classe em seu modelo de herdar de SessionStateStoreProviderBase e implementando os métodos necessários que ele envia, verifique a lista de métodos necessários aqui.

Se você quiser usar um exemplo, consulte aqui.Este exemplo usando odbc, mas simplesmente substituir por acesso de classe como OdbcConnection para SqlConnection e vice-versa.

Boa sorte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top