Win 7 Запрос на разрешение типа 'System.Security.Permissions.SecurityPermission не выполнен - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть dll, которая обращается к сканеру на локальном компьютере из веб-приложения интрасети, написанного на asp.net.DLL предоставляется полное доверие на локальной машине с использованием caspol.На Win XP все работало нормально, но не на Win 7.

Код:

            PermissionSet ps = new PermissionSet(PermissionState.Unrestricted);
        ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.AllFlags));
        ps.Assert();


wiaDevMgr = new DeviceManager();
            foreach (DeviceInfo di in wiaDevMgr.DeviceInfos) {

При запросе DeviceInfos выдается следующая ошибка:

Exception: Acquire from WIA failed Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Я проверил фактические разрешения, используя caspol - запись для соответствующей зоны:

   1.2.  Zone - Intranet: FullTrust
  1.2.1.  All code: Same site Web
  1.2.2.  All code: Same directory FileIO - 'Read, PathDiscovery'
  1.2.3.  Url - http://srvr/tpc/pictureConverter.dll: FullTrust
  1.2.4.  Url - http://srvr/tpc/printUniformities.dll: FullTrust
  1.2.5.  Url - http://srvr/tpc/WiaOneScan.dll: FullTrust
  1.2.6.  Url - http://srvr/tpc/DocPrint.dll: FullTrust
  1.2.7.  Url - http://srvr/tpc/FileAdmin.dll: FullTrust
  1.2.8.  Url - http://srvr/tpc/Interop.ImageMagickObject.dll: FullTrust
  1.2.9.  Url - http://srvr/tpc/Interop.WIALib.dll: FullTrust

Где соответствующая dll - WiaOneScan.dll

Спасибо за любые идеи.

1 Ответ

1 голос
/ 29 июня 2011

Наконец-то решил. Использовал PermCalc.exe, чтобы получить список разрешений, необходимых для DLL.


            PermissionSet ps = new PermissionSet(PermissionState.Unrestricted);
            ReflectionPermission rp = new ReflectionPermission(PermissionState.Unrestricted);
            rp.Flags = ReflectionPermissionFlag.AllFlags;
            ps.AddPermission(rp);

            SecurityPermission sp = new SecurityPermission(PermissionState.Unrestricted);
            sp.Flags = SecurityPermissionFlag.AllFlags;
            ps.AddPermission(sp);

            KeyContainerPermission kc = new KeyContainerPermission(KeyContainerPermissionFlags.AllFlags);
            ps.AddPermission(kc);
            ps.Assert();

...