繁体   English   中英

使用Windows MAF(AddIn管道)进行调试时出现异常

[英]Exception while debugging using windows MAF (AddIn pipeline)

我一直在尝试构建AddIn架构并使用MAF。 我所遵循的基础知识在Microsoft文档中给出

关于申请的简要背景:

  1. 我有一个wpf主机应用程序,它将在运行时加载addIn程序集。 addIns实现了一个契约(Interface),并用一个帮助主机发现它的属性进行修饰。 这些是MAF下的标准内容,所以不要在这里放更多,但如果它有助于清晰,那么很乐意放入更多内容。应用程序Host / AddIns都在我的笔记本电脑上,我在管理员资料下运行。

加载AddIns时,主机中的主要代码是:

    string appPath = Environment.CurrentDirectory + "\\Pipeline";
    string[] warnings = AddInStore.Rebuild(appPath);
       if (warnings.Length > 0)
          {
             string msg = "Could not rebuild pipeline:";
             foreach (string warning in warnings) msg += "\n" + warning;
             MessageBox.Show(msg);
             return;
          }

   Collection<AddInToken> addInTokens = AddInStore.FindAddIns(typeof(IWPFAddInHostView), appPath);

   AddInToken wpfAddInToken = addInTokens[0];

   // the only line I can see that has something to do with
   // security permissions
   this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.Internet);

   FrameworkElement addInUI = this._wpfAddInHostView.GetAddInUI();
                this.addInUIHostGrid.Children.Add(addInUI);

当我运行它时,此代码工作正常(加载addIn并在addIn UI中单击按钮时弹出预期的消息框),但在调试模式下,它会出现以下异常并导致崩溃(它会正确加载addIn但单击按钮时发生异常),我已经标记了唯一与上述安全权限有关的行,不确定为什么这只会在调试模式下发生,甚至为什么会发生。

另外,我在一个问题中不知道2个问题,但我没有看到很多人使用MAF,产品页面没有主动支持,不知道我是否做出了错误的选择。

System.Security.SecurityException HResult = 0x8013150A
Message =请求类型'System.Security.Permissions.UIPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。
Source = StackTrace:

更改安全权限

 this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.Internet);

完全信任的作品。

this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.FullTrust);

所以,显然这与网络安全水平有关,将是部分信任。 但我仍然很好奇,为什么只有当我在调试模式下运行系统时才会发生此异常?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM