System.Security.Permissions.MediaPermission Исключение при загрузке изображения в dll - PullRequest
1 голос
/ 21 сентября 2009

Я разрабатываю приложение с использованием C # в .Net Framework 3.5. В приложении я создаю несколько объектов из разных dll (также разработанных в C #), используя отражение. Все эти объекты расширяют абстрактный класс (AApplication):

    private AApplication BuildApplication(string path)
    {
        Assembly appAssembly = Assembly.LoadFrom(path);
        Type[] typeArray = appAssembly.GetTypes();
        foreach (Type t in typeArray)
        {
            if (typeof(AApplication).IsAssignableFrom(t))
            {
                ConstructorInfo ci = t.GetConstructor(new Type[0]);
                AApplication app = ci.Invoke(null) as AApplication;
                return app;
            }
        }
        return null;
    }

Абстрактный класс AApplication находится в другой библиотеке (названной AppsLibrary), в которой также есть изображения в качестве ресурсов. Этот класс имеет простой метод для загрузки изображения:

    protected BitmapImage GetImage(string path)
    {
        BitmapImage bmp = new BitmapImage();
        bmp.BeginInit();
        bmp.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
        bmp.CacheOption = BitmapCacheOption.OnLoad;
        bmp.CreateOptions = BitmapCreateOptions.None;
        bmp.EndInit();
        return bmp;
    }

Проблема : когда я вызываю этот метод (GetImage) из класса, производного от AApplication, который находится в другой DLL, возникает исключение:

'System.Security.Permissions.MediaPermission, WindowsBase, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.

System.Security.CodeAccessSecurityEngine.Check (Требование объекта, StackCrawlMark & ​​stackMark, логическое значение isPermSet) en System.Security.CodeAccessPermission.Demand () ru MS.Internal.PresentationCore.SecurityHelper.DemandMediaPermission (MediaPermissionAudio audioPermissionToDemand, MediaPermissionVideo videoPermissionToDemand, MediaPermissionImage imagePermissionToDemand) ru System.Windows.Media.Imaging.BitmapDecoder.DemandIfImageBlocked () ru System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream (Uri baseUri, Uri uri, Потоковый поток, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, логическая вставкаInInDecoderCache) en System.Windows.Media.Imaging.BitmapImage.FinalizeCreation () en System.Windows.Media.Imaging.BitmapImage.EndInit () en AppsLibrary.AApplication.GetImage (String path)

Странно то, что исключение возникает только на некоторых компьютерах. Есть идеи?

1 Ответ

1 голос
/ 21 сентября 2009

Ошибка связана с полным / частичным доверием. Можете ли вы предоставить больше информации. например, откуда вы загружаете файлы?

...