无法确定域名的使用System.IO.Packaging程序身份(Unable to determi

2019-09-17 03:39发布

我使用通过COM互操作System.IO.Packaging程序时得到“无法确定域的身份”,也有说明为什么发生这种情况和解决方案是运行在自己的AppDomain违规功能的几篇文章。

所以我把示例代码,它看起来像下面,但我仍然得到错误,我想知道我做错了,也与2010 VS它说AddAssembly和AddHost是过时的 - 我不知道这是否意味着他们不再实现,但如果多数民众赞成我不的情况下真正了解如何使用新的方法(AddAssemblyEvidence和AddHostEvidence)?

 AppDomainSetup setup = new AppDomainSetup();
 setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;

 Evidence evidence = new Evidence(AppDomain.CurrentDomain.Evidence);
 evidence.AddAssembly(Assembly.GetExecutingAssembly().FullName);
 evidence.AddHost(new Zone(SecurityZone.MyComputer));

 AppDomain domain = AppDomain.CreateDomain("BlobPackage", evidence, setup);

 BlobPackage blob_interal = (BlobPackage)domain.CreateInstanceAndUnwrap(typeof(BlobPackage).Assembly.FullName, typeof(BlobPackage).FullName);

 blob_interal.pack(FilePath, RootPath, m_source_files); <-- STILL FAILS

 AppDomain.Unload(domain);

Answer 1:

我解决了这个一个我自己,我忘了继承自MarshalByRefObject我的课。

它有点笨,它允许你创建一个实例,并调用它,除了它仍然在默认域运行时,你会觉得它会抛出一个异常或者什么的,反正通过标记类为[序列化()]和自MarshalByRefObject派生修复它。



文章来源: Unable to determine the identity of domain using System.IO.Packaging