我尝试在中等信任环境中使用 Windsor 和 NHibernate,但遇到了一些权限问题。我已经阅读了有关此问题的其他问题,但我正在使用 Windsor 的 NHibernate 工具,但我还没有看到讨论过。
由于某种原因,容器启动时存在对 CaSTLe.Service.Transations 程序集的依赖性。然后尝试创建以下实例:
Castle.Services.Transaction.CallContextActivityManager()
由于 CallContextActivityManager 不愿意在 System.Runtime.Remoting.Messaging.CallContext 中使用 SetData,因此会引发安全异常,只有在您拥有基础结构权限时才允许使用 SetData。我猜中等信任度的应用程序不会。
有人知道解决中等信任度安全问题的方法吗?我应该转储 NHibernate 设施并在容器中手动注册它吗?
最佳答案
您可以通过在容器中注册 TLSActivityManager(对于 IActivityManager 类型)来解决此问题。然后,DefaultTransactionManager(由 NHibernateIntegrationFacility 使用)将使用此 ActivityManager,而不是触发新的 CallContextActivityManager。
关于nhibernate - 在共享主机上使用 CaSTLe Windsor 和 NHibernate 设施,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038914/