在共享主机上使用 Castle Windsor 和 NHibernate 设施

Posted

技术标签:

【中文标题】在共享主机上使用 Castle Windsor 和 NHibernate 设施【英文标题】:Using Castle Windsor and the NHibernate facility on shared hosting 【发布时间】:2010-11-05 13:14:29 【问题描述】:

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

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

Castle.Services.Transaction.CallContextActivityManager()

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

工作愉快。非常感谢。

以上是关于在共享主机上使用 Castle Windsor 和 NHibernate 设施的主要内容,如果未能解决你的问题,请参考以下文章

Castle.Windsor依赖注入的高级应用_Castle.Windsor.3.1.0

如何在使用反射加载的程序集中使用 Castle.Windsor

Castle Windsor 3 + Fluent NHibernate + Castle.NHibernate.Integration

使用 Castle Windsor 进行 WCF 依赖注入 - 请帮忙?

Castle Windsor 学习-----Installer的几种安装方式

为啥 Castle Windsor 拦截器会破坏 C# 动态对象上方法的运行时绑定?