Ошибка: «Правила безопасности наследования нарушены» во время песочницы - PullRequest
2 голосов
/ 18 марта 2011

Я создаю приложение, которое будет запускать код в изолированной среде.Эта среда должна позволять только недоверенному коду обрабатывать ресурсы, которые ему предоставлены, и возвращать определенный тип данных.Я использую принципы, описанные в этой статье, для настройки песочницы:

Как: выполнить частично доверенный код в песочнице

У меня также есть код, который будетнужно запустить внутри изолированной среды.К сожалению, когда я пытаюсь настроить тип для запуска внутри песочницы, я получаю следующую ошибку:

Правила безопасности наследования нарушены по типу: 'MyTypeRunningInSandbox'.Производные типы должны либо соответствовать доступности безопасности базового типа, либо быть менее доступными.

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

Структура моего приложения (чтобы помочь вам понять):

TypeLoader class
   \
    Trusted Sandbox Manager (i.e. sets up a the new sandbox)
     \              (the error is happening in this class while creating the 
      |             new app domain) 
      |
      |Untrusted Sandbox Manager (i.e. runs the untrusted code)

Если вы сравните мое решение в отношении статьи Microsoft вышемой код не соответствует следующей строке:

ObjectHandle handle = Activator.CreateInstanceFrom(
newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,
       typeof(Sandboxer).FullName );

Есть мысли о том, как устранить эту проблему?

1 Ответ

5 голосов
/ 19 марта 2011

Я наконец понял это. Мне нужно было лучше понять, как работают надежные сборки и строгие имена. Проблема заключалась в том, что мой базовый тип для моего ненадежного типа находился в сборке, подписанной тем же ключом строгого имени, который я настроил как доверенный ранее. Когда я переместил базовый тип в новую сборку с другим ключом строгого имени, он начал работать отлично. Теперь это кажется таким очевидным, не могу представить, почему я не видел его раньше.

Спасибо всем, кто высказал это мнение!

...