我正在使用嵌入式客户端/服务器版本的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:
答案 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
中运行