Я сейчас работаю над проектом, в котором мы создаем сайт MVC
. Сайт должен использовать защиту доступа к коду из-за того, что необходимо подключить сторонние dll для обеспечения настраиваемой функциональности. Теперь мы не хотим, чтобы эти сборки имели полное доверие, и поэтому использовали новую модель безопасности в .NET 4.0
. Из-за этих требований мы сильно называем все наши собственные сборки и устанавливаем их в gac. Некоторые из этих сборок являются SecurityTransparent, смешанными с типами и членами SecuritySafeCritical и SecurityCritical.
Сборки, типы и члены securityTransparent и SecurityCritical могут использоваться сторонними разработчиками сборок в соответствии с нашими намерениями.
Теперь у меня проблема с Global.asax
, который наследуется от класса, находящегося в сборке, отмеченной атрибутом AllowParhibitedTrustedCallers
.
Этот класс, в свою очередь, наследуется от HttpApplication
.
В моем web.config
уровень доверия в настоящее время установлен на Высокий.
Я получаю следующую ошибку:
Правила безопасности наследования нарушены типом: 'ASP.global_asax'. Производные типы должны либо соответствовать доступности безопасности базового типа , либо быть менее доступным
Я полагаю, это из-за правил наследования при использовании модели безопасности, и что класс HttpApplication
должен иметь более строгие правила, чем SecurityTransparent.
Я попытался пометить свой собственный класс атрибутом SecuritySafeCritical
, но безуспешно.
Я надеюсь, что у некоторых из вас есть решение этой проблемы.