2

我正在尝试在中等信任环境中使用 Windsor 和 NHibernate,并且遇到了一些权限问题。我已经阅读了有关此问题的其他问题,但我使用的是 Windsor 的 NHibernate 设施,我还没有看到讨论过。

由于某种原因,容器启动时依赖于 Castle.Service.Transations 程序集。然后尝试创建和实例:

Castle.Services.Transaction.CallContextActivityManager()

当 CallContextActivityManager 使用 System.Runtime.Remoting.Messaging.CallContext 中的 SetData 时引发安全异常,只有在您拥有基础架构权限时才允许使用。我猜中等信任的应用程序没有。

有没有人知道以中等信任度解决这个安全问题的方法?我应该转储 NHibernate 设施并将其手动注册到容器中吗?

4

1 回答 1

3

您可以通过在容器中注册 TLSActivityManager(对于 IActivityManager 类型)来解决此问题。DefaultTransactionManager(由 NHibernateIntegrationFacility 使用)将使用这个 ActivityManager 而不是触发一个新的 CallContextActivityManager。

于 2009-06-25T09:17:35.803 回答