db4o在asp.net Medium Trust环境中运行

时间:2009-06-29 09:04:47

标签: asp.net db4o medium-trust

我正在使用嵌入式客户端/服务器版本的db4o(我称之为OpenServer()而不是OpenFile()方法),这样我就可以托管一个asp.net网站,该网站将有几个用户同时读写数据库。唯一的问题是我们使用的webhost是一个中等信任环境,因此它会抛出一个错误,指出程序集不支持部分信任的调用者......

想知道是否有人对如何使其发挥作用有任何建议。谢谢!

:: UPDATE ::

我已使用[AllowPartiallyTrustedCallers]属性重新编译db4o dll,现在我收到以下特定错误:

System.TypeInitializationException未被用户代码处理   Message =“'DataObjecten.db4oManager'的类型初始值设定项引发异常。”   类型名= “DataObjecten.db4oManager”   InnerException:System.Security.SecurityException        Message =“请求类型'System.Security.Permissions.SecurityPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。”        来源= “Db4objects.Db4o”        堆栈跟踪:             在Db4objects.Db4o.Internal.Platform4.AddShutDownHook(PartialObjectContainer容器)             在Db4objects.Db4o.Internal.PartialObjectContainer.Initialize1(IConfiguration config)             在Db4objects.Db4o.Internal.PartialObjectContainer.Open()             在Db4objects.Db4o.Internal.IoAdaptedObjectContainer..ctor(IConfiguration config,String fileName)             在Db4objects.Db4o.Internal.ObjectContainerFactory.OpenObjectContainer(IConfiguration config,String databaseFileName)             在Db4objects.Db4o.Db4oFactory.OpenFile(IConfiguration config,String databaseFileName)             在Db4objects.Db4o.Db4oFactory.OpenServer(IConfiguration配置,String databaseFileName,Int32端口,INativeSocketFactory socketFactory)             在Db4objects.Db4o.Db4oFactory.OpenServer(IConfiguration config,String databaseFileName,Int32 port)             在DataObjecten.db4oManager..cctor()        InnerException:

3 个答案:

答案 0 :(得分:0)

我不知道这是否有效,但你可以尝试编写一个AllowPartiallyTrustedCaller设置为true的包装器DLL,并将所有调用传递给db4o DLL。

看到db4o是开源的,你可以自己下载并重新编译,AllowPartiallyTrustedCaller设置为true。

然而,

This线程暗示这可能不起作用。

答案 1 :(得分:0)

我也遇到了这个问题,看来db4o在中型信任Web应用程序环境中无法在客户端/服务器模式下运行。
This project for ASP.NET Providers using db4o似乎证实了这一点 它声明db4o依赖于反射和非托管代码,这些代码在中等信任中都是禁止的 我认为你唯一的希望就是遵循他们的建议并找到一个共享提供商,让你可以完全信任地运行你的代码。
非常令人失望,因为我喜欢使用db4o,而这已经耗费了数周的时间。

答案 2 :(得分:-1)

我发现db4o不能在中等信任环境中工作。任何正在寻找可嵌入或启用服务器且可在中等信任环境中使用的nosql解决方案的人都应该看看ravendb.net - 解决了我的所有问题......(必须使用munin托管存储引擎)。

与对象数据库(db4o)类似,但没有令人头疼的问题,也更加通用。此外,通过JSON / HTTP ...链接或标准查询等工作。

大额津贴是:

通过Lucene.NET进行全文搜索 分片/自动分片 复制(WAN / LAN) LINQ索引/自动索引 出色的性能(比db4o快) 原生于.NET 符合ACID标准 交易 多租户 在客户端/服务器模式下运行或嵌入 能够在Medium Trust

中运行