Запуск «частично доверенных» сборок .NET из общего сетевого ресурса. - PullRequest
11 голосов
/ 23 августа 2008

Когда я пытаюсь запустить сборку .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 и отметив, что boo.exe имеет разрешение Unrestricted (которого раньше не было). полис).

Даже с разрешения boo.exe не запускается. Я все еще получаю то же сообщение об ошибке.

Что я могу сделать для устранения этой проблемы? Есть ли другой способ запуска «частично доверенных» сборок из общих сетевых ресурсов без необходимости что-либо менять для каждой сборки, которую я хочу запустить?

Ответы [ 4 ]

5 голосов
/ 23 августа 2008

В .NET 3.5 с пакетом обновления 1 (SP1) сборки .NET, работающие с общих ресурсов UNC, имеют полные разрешения.

См. от Брэда Абрамса. Разрешить запуск .exes с общих сетевых ресурсов для обхода проблемы и обсуждений, и, наконец, последующий .NET 3.5 SP1 позволяет запускать управляемый код из общей сетевой папки .

3 голосов
/ 25 августа 2008

Я решил проблему с помощью caspol, как указано в сообщении в блоге Джонни Хьюза Запуск приложения .Net из сетевой папки :

caspol -addgroup 1.2 -url file:///H:/* FullTrust

Кажется, графический интерфейс настройки .NET для управления политиками просто не работает.

2 голосов
/ 23 августа 2008

Взгляните на программу 'caspol.exe' (поставляется с .NET runtime). Вам придется сделать это на компьютере, с которого вы пытаетесь запустить приложение. Я не смог «пометить» и собрать (наверное, только я). Тем не менее, используя caspol и настройку соответствующего разрешения для моего приложения LocalIntranet_Zone, исправьте мою похожую проблему.

Я слышал (но еще не пробовал), что в .NET 3.5 sp1 снято это ужесточенное требование безопасности (по умолчанию сборки .NET не размещаются на общем ресурсе).

0 голосов
/ 23 августа 2008

Я думаю, что вы хотите добавить атрибут AllowPartiallyTrustedCallers в вашу сборку. Сообщение об ошибке подразумевает, что то, что вызывает вашу сборку boo.exe, не является полностью доверенным, и boo.exe не имеет этого атрибута, разрешающего это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...