2012-05-29 2 views
3

У нас возникла проблема с преобразованием наших продуктов в .NET 4.0 и использованием обновленной модели безопасности доступа к коду. В основном у нас есть библиотеки компонентов, которые могут или не могут быть установлены в GAC на машине.Проблемы безопасности .NET 4.0 XBAP с GAC

Если кто-то создает XBAP с параметрами частичного доверия по умолчанию, который использует эти библиотеки, а конечный пользователь устанавливает XBAP (который развертывает библиотеки во время его установки), он отлично работает, если наши библиотеки еще не были в GAC.

Если они были в GAC, XBAP не будет работать во время выполнения с исключениями безопасности. Я считаю, что проблема связана с этим: http://msdn.microsoft.com/en-us/library/aa970906.aspx

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

Похоже, что с тех пор, как они вытащились из GAC, их безопасность повышена, даже несмотря на то, что они представляют собой то же самое. DLL, развернутое с XBAP. Но в этом случае все ломается.

Есть ли способ обойти эту проблему, если не добавить атрибут AllowPartiallyTrustedCallersAttribute для всех библиотек?

Или есть способ предотвратить просмотр XBAP в GAC для сборки и только с использованием точной копии ссылки, с которой она развернута?

Заранее благодарим за любую помощь.

ответ

0

В визуальной студии, проводник решений, щелкните ссылку и попробуйте установить свойство «SpecificVersion» в true. Он должен просто посмотреть в указанном пути и указать версию, указанную при ссылке, и не идти на поиски последней версии в GAC.

См .net reference specificversion true or false?

Обратите внимание, что если вы добавите новую версию справки, вы должны удалить текущую ссылку, он не будет автоматически заменять его.