我正在使用.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(字符串路径)
奇怪的是,异常只发生在某些计算机上。 有什么想法吗?
答案 0 :(得分:1)
错误与完全/部分信任有关。你能提供更多信息吗?比如从哪里加载文件?