Pergunta

Eu estou usando a versão cliente / servidor integrada do db4o (I chamado OpenServer () método em vez de OpenFile ()) para que eu possa hospedar um site asp.net que terá vários usuários ler e escrever para o banco de dados simultaneamente. O único problema é que o serviço de hospedagem que usamos é um ambiente de confiança média para que ele está jogando um erro informando que o conjunto não suporta chamadores parcialmente confiáveis ??...

saber se alguém tem alguma sugestão sobre como chegar a este trabalho. Obrigado!

:: Update ::

Eu recompilados a dll db4o com o atributo [AllowPartiallyTrustedCallers] e agora estou recebendo o seguinte erro específico:

System.TypeInitializationException foi não tratada pelo código do usuário Mensagem = "O inicializador de tipo para 'DataObjecten.db4oManager' emitiu uma exceção." TypeName = "DataObjecten.db4oManager" InnerException: System.Security.SecurityException Message = "Solicitação para a permissão do tipo 'System.Security.Permissions.SecurityPermission, mscorlib, versão = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' falhou." Fonte = "Db4objects.Db4o" StackTrace: em Db4objects.Db4o.Internal.Platform4.AddShutDownHook (recipiente PartialObjectContainer) em Db4objects.Db4o.Internal.PartialObjectContainer.Initialize1 (IConfiguration config) em Db4objects.Db4o.Internal.PartialObjectContainer.Open () em Db4objects.Db4o.Internal.IoAdaptedObjectContainer..ctor (IConfiguration configuração, String nomeArquivo) em Db4objects.Db4o.Internal.ObjectContainerFactory.OpenObjectContainer (IConfiguration configuração, String databaseFileName) em Db4objects.Db4o.Db4oFactory.OpenFile (IConfiguration configuração, String databaseFileName) em Db4objects.Db4o.Db4oFactory.OpenServer (IConfiguration configuração, String databaseFileName, porta Int32, INativeSocketFactory socketFactory) em Db4objects.Db4o.Db4oFactory.OpenServer (IConfiguration configuração, String databaseFileName, porta Int32) em DataObjecten.db4oManager..cctor () InnerException:

Foi útil?

Solução 3

Eu descobri que db4o não vai funcionar em um ambiente de confiança média. Quem está à procura de uma solução NoSQL que é embutido ou servidor habilitado e utilizável em um ambiente de confiança média deve dar uma olhada ravendb.net - resolveu todos os meus problemas ... (deve usar o mecanismo de armazenamento Munin gerenciado).

Semelhante a um banco de dados objeto (db4o), mas sem toda a dor de cabeça e muito mais versátil. Além disso, trabalha com coisas como link ou consulta padrão via JSON / HTTP ...

Big vantagens são:

O texto completo pesquisar via Lucene.NET Sharding / Auto-Sharding Replication (WAN / LAN) LINQ indexação / indexação automática Excelente desempenho (muito mais rápido do db4o) Nativa da NET compatível com ACID transações Múltiplos inquilinos Executado no modo cliente / servidor ou embutida Capaz de funcionar em confiança média

Outras dicas

Eu não sei se isso funciona, mas você pode tentar escrever um wrapper DLL que tem conjunto AllowPartiallyTrustedCaller como verdadeiro, e passa todas as chamadas para a DLL db4o.

Vendo como db4o é open source que você pode baixar e recompilar com o conjunto AllowPartiallyTrustedCaller para true-se claro.

Esta discussão no entanto sugere que isso pode não funcionar.

Eu acertei este problema tão bem e parece que db4o não funcionará no modo cliente / servidor em um ambiente de aplicação web de confiança média.
Este projecto para Provedores de ASP.NET usando db4o parece confirmar isso.
Ele afirma que db4o é dependente de reflexão e código não gerenciado que são ambos proibidos em confiança média.
Eu acho que sua única esperança de progredir este seria seguir sua sugestão e encontrar um provedor compartilhada que permite que você execute o seu código em confiança total.
Muito decepcionante como eu gostei de trabalhar com db4o e isso acaba scuppered várias semanas de trabalho.

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