Question

J'utilise la version client / serveur intégrée de db4o (j'ai appelé OpenServer () à la place de la méthode OpenFile ()) afin de pouvoir héberger un site Web asp.net permettant à plusieurs utilisateurs de lire et d'écrire simultanément dans la base de données. Le seul problème est que l'hébergeur Web que nous utilisons est un environnement de confiance moyenne, ce qui génère une erreur indiquant que l'assembly ne prend pas en charge les appelants dont la confiance est partielle ...

Vous vous demandez si quelqu'un a des suggestions à faire pour que cela fonctionne. Merci!

:: UPDATE ::

J'ai recompilé la db4o dll avec l'attribut [AllowPartiallyTrustedCallers] et je reçois maintenant l'erreur spécifique suivante:

System.TypeInitializationException non gérée par le code utilisateur   Message = & Quot; l'initialiseur de type de 'DataObjecten.db4oManager' a levé une exception. & Quot;   TypeName = & Quot; DataObjecten.db4oManager & Quot;   InnerException: System.Security.SecurityException        Message = & Quot; Demande d'autorisation de type 'System.Security.Permissions.SecurityPermission, mscorlib, version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué. & Quot;        Source = & Quot; Db4objects.Db4o & Quot;        Trace de la pile:             at Db4objects.Db4o.Internal.Platform4.AddShutDownHook (conteneur PartialObjectContainer)             at Db4objects.Db4o.Internal.PartialObjectContainer.Initialize1 (Config IConfiguration)             sur Db4objects.Db4o.Internal.PartialObjectContainer.Open ()             at Db4objects.Db4o.Internal.IoAdaptedObjectContainer..ctor (IConfiguration config, String nomfichier)             at Db4objects.Db4o.Internal.ObjectContainerFactory.OpenObjectContainer (Config IConfiguration, String databaseFileName)             at Db4objects.Db4o.Db4oFactory.OpenFile (IConfiguration config, String databaseFileName)             at Db4objects.Db4o.Db4oFactory.OpenServer (Configuration IConfiguration, String databaseFileName, port Int32, INativeSocketFactory socketFactory)             at Db4objects.Db4o.Db4oFactory.OpenServer (Configuration IConfiguration, String databaseFileName, port Int32)             à DataObjecten.db4oManager..cctor ()        InnerException:

Était-ce utile?

La solution 3

J'ai constaté que db4o ne fonctionnerait PAS dans un environnement de confiance moyenne. Tous ceux qui recherchent une solution nosql intégrable ou compatible avec un serveur et utilisable dans un environnement de confiance moyenne doivent consulter ravendb.net - ils ont résolu tous mes problèmes ... (ils doivent utiliser le moteur de stockage géré Munin).

Semblable à une base de données d’objets (db4o) mais sans tous les maux de tête et beaucoup plus polyvalent. De plus, fonctionne avec des choses comme les requêtes par lien ou standard via JSON / HTTP ...

Les gros avantages sont:

Recherche en texte intégral via Lucene.NET Éclatage / Éclatage automatique Réplication (WAN / LAN) Indexation LINQ / Indexation automatique Excellente performance (bien plus rapide que db4o) Originaire de .NET Conforme à l'ACID Transactions Locations multiples Exécuter en mode client / serveur ou intégré Capable de fonctionner en confiance moyenne

Autres conseils

Je ne sais pas si cela fonctionne, mais vous pouvez essayer d'écrire une DLL wrapper avec AllowPartiallyTrustedCaller la valeur true et passant tous les appels à la DLL db4o.

Étant donné que db4o est une source ouverte, vous pouvez télécharger et recompiler avec <=> la valeur true vous-même, bien sûr.

Ce thème suggère toutefois que cela pourrait ne pas fonctionner.

J'ai également rencontré ce problème et il semble que db4o ne fonctionnera pas en mode client / serveur dans un environnement d'application Web de confiance moyenne.
Ce projet destiné aux fournisseurs ASP.NET utilisant db4o semble le confirmer.
Il indique que db4o dépend de la réflexion et du code non managé, interdits en confiance moyenne.
Je pense que votre seul espoir de progresser dans ce domaine serait de suivre leur suggestion et de trouver un fournisseur partagé vous permettant d'exécuter votre code en toute confiance.
Très décevant car j'ai aimé travailler avec db4o et cela vient de briser plusieurs semaines de travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top