【问题标题】:System.Security.Permissions.MediaPermission Exception when load image in dll在 dll 中加载图像时 System.Security.Permissions.MediaPermission 异常
【发布时间】:2009-09-21 03:03:18
【问题描述】:

我正在使用 .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(对象需求, StackCrawlMark& stackMark, Boolean isPermSet) zh System.Security.CodeAccessPermission.Demand() zh MS.Internal.PresentationCore.SecurityHelper.DemandMediaPermission(MediaPermissionAudio audioPermissionToDemand, MediaPermissionVideo videoPermissionToDemand, MediaPermissionImage imagePermissionToDemand) zh System.Windows.Media.Imaging.BitmapDecoder.DemandIfImageBlocked() en System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream 流, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) zh System.Windows.Media.Imaging.BitmapImage.FinalizeCreation() zh System.Windows.Media.Imaging.BitmapImage.EndInit() zh AppsLibrary.AApplication.GetImage(字符串路径)

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

【问题讨论】:

    标签: c# reflection dll permissions add-in


    【解决方案1】:

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

    【讨论】:

    • 应用程序的简化结构为:Windows.xaml(一个项目) UserControl.xaml(另一个项目):AAplication(另一个项目) 方法BuildApplication在Windows.xaml的项目中,方法GetImage 在 AAplication 类中,在 UserControl 类中使用。
    猜你喜欢
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多