System.Security.Permissions.MediaPermission在dll中加载图像时出现异常

时间:2009-09-21 03:03:18

标签: c# reflection dll permissions add-in

我正在使用.Net Framework 3.5中的C#开发应用程序。在应用程序中,我使用反射从不同的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;
    }

问题:当我从另一个dll中的AApplication派生的类调用此方法(GetImage)时,会发生异常:

'System.Security.Permissions.MediaPermission,WindowsBase,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。

System.Security.CodeAccessSecurityEngine.Check(Object demand,StackCrawlMark& stackMark,Boolean isPermSet)    en System.Security.CodeAccessPermission.Demand()    en MS.Internal.PresentationCore.SecurityHelper.DemandMediaPermission(MediaPermissionAudio audioPermissionToDemand,MediaPermissionVideo videoPermissionToDemand,MediaPermissionImage imagePermissionToDemand)    en System.Windows.Media.Imaging.BitmapDecoder.DemandIfImageBlocked()    en System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri,Uri uri,Stream stream,BitmapCreateOptions createOptions,BitmapCacheOption cacheOption,RequestCachePolicy uriCachePolicy,Boolean insertInDecoderCache)    en System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()    en System.Windows.Media.Imaging.BitmapImage.EndInit()    在AppsLibrary.AApplication.GetImage(字符串路径)

奇怪的是,异常只发生在某些计算机上。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

错误与完全/部分信任有关。你能提供更多信息吗?比如从哪里加载文件?

相关问题