Вопрос

Я пытаюсь использовать Windsor и NHibernate в среде со средним уровнем доверия и сталкиваюсь с некоторыми проблемами с разрешениями. Я прочитал другие вопросы по этому вопросу, но я использую средство NHibernate в Виндзоре, которое я еще не обсуждал.

По какой-то причине существует зависимость от сборки Castle.Service.Transations при запуске контейнера. Затем он пытается создать и экземпляр:

Castle.Services.Transaction.CallContextActivityManager()

Исключение безопасности возникает, когда CallContextActivityManager утомляет использование SetData в System.Runtime.Remoting.Messaging.CallContext, которое разрешено только при наличии разрешения на инфраструктуру. Я полагаю, что приложения со средним уровнем доверия этого не делают.

Кто-нибудь знает способ обойти эту проблему безопасности при среднем доверии? Должен ли я сбросить средство NHibernate и зарегистрировать его вручную в контейнере?

Это было полезно?

Решение

Вы можете обойти это, зарегистрировав TLSActivityManager в контейнере (для типа IActivityManager). Затем DefaultTransactionManager (используемый NHibernateIntegrationFacility) будет использовать этот ActivityManager вместо запуска нового CallContextActivityManager.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top