Запуск "частично доверенных" сборников .NET из сетевого ресурса
Когда я пытаюсь запустить сборку .NET(boo.exe
) из общего сетевого ресурса (сопоставленного с диском), она терпит неудачу, поскольку она только частично доверяет:
Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at BooCommandLine..ctor()
at Program..ctor()
at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe
С инструкциями сообщения в блоге, я добавил политику в .NET Configuration, полностью доверяющую всем ассамблеям с file:///H:/*
как их URL, Я проверил это, введя URL file:///H:/boo-svn/bin/boo.exe
в инструмент Evaluate Assembly в .NET Configuration и отметив, что у boo.exe было разрешение Unrestricted (которое у него не было до политики).
Даже с разрешением boo.exe
не запускается. Я все равно получаю то же сообщение об ошибке.
Что я могу сделать, чтобы отладить эту проблему? Есть ли другой способ запускать "частично доверенные" сборки из сетевых ресурсов без необходимости менять что-либо для каждой сборки, которую я хочу запустить?
Ответы
Ответ 1
С .NET 3.5 SP1 сборки .NET, запущенные из общих ресурсов UNC, имеют полные разрешения.
См. Brad Abrams Разрешить EXE запускать сетевые ресурсы для обхода и обсуждений и, наконец, отслеживать .NET 3.5 SP1 позволяет запускать управляемый код из сетевого ресурса.
Ответ 2
Я решил проблему, используя caspol
, как указано в сообщении блога Джонни Хьюза Запуск приложения .Net из сетевого ресурса:
caspol -addgroup 1.2 -url file:///H:/* FullTrust
Кажется, что графический интерфейс .NET Configuration для управления политиками просто не работает.
Ответ 3
Взгляните на программу "caspol.exe" (с поддержкой времени выполнения .NET). Вам нужно будет сделать это на машине, с которой вы пытаетесь запустить приложение. Я не смог "отметить" и сборку (возможно, только меня). Однако, используя caspol и настроя правильное разрешение для моего приложения LocalIntranet_Zone, исправьте мою аналогичную проблему.
Я слышал (но еще не пробовал), что .NET 3.5 sp1 удалил это ужесточение требований безопасности (не позволяя сборкам .NET размещаться на общем ресурсе по умолчанию).
Ответ 4
Я думаю, вы хотите добавить атрибут AllowPartiallyTrustedCallers в свою сборку. Сообщение об ошибке означает, что что-то, что вызов в вашей сборке boo.exe не полностью доверен, и boo.exe не имеет этого атрибута, разрешающего его.