【问题标题】:Async CTP on Partial Trust environment部分信任环境中的异步 CTP
【发布时间】:2012-06-13 01:07:34
【问题描述】:

有谁知道是否可以“Bin 部署”异步 CTP?

由于 Async 的很大一部分基本上是一个编译器技巧,我认为在没有安装 Async CTP 的情况下预编译我的应用程序并将其部署到服务器上可能会奏效。不幸的是,事情似乎没有这么简单。当我尝试调用异步方法时收到以下错误消息:

Task<Result> task = _checker.CheckAsync(input);

“System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1”的类型初始化程序引发了异常。

这并不是我所期望的错误类型,但也许有一些替换程序集可以部署到我的 Bin 目录来解决这个问题?我无法在这台(生产)机器上安装 Async CTP。

更新: 我也包含了 InnerException 详细信息:

System.MethodAccessException:尝试 通过安全透明方法 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder1<TResult>..cctor()' to access security critical method 'System.Threading.Tasks.TaskScheduler.add_UnobservedTaskException(System.EventHandler1)' 失败的。 在 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1..cctor()

这似乎是一个中等信任问题,而不是异步问题?

【问题讨论】:

  • 想评论一下为什么这个问题被否决了吗?

标签: android .net android-asynctask


【解决方案1】:

您还需要部署 AsyncCtpLibrary.dll。我期望这就是所需要的...您已经将它与您的应用程序一起部署了吗?

TypeInitializerException 的内部异常是什么?

编辑:正如您所说,这看起来像是一个中等信任问题,无论如何安装整个东西都无法解决。可能值得直接向团队提出此问题(如果您愿意,我可以这样做),以防您的情况在安全性方面存在异常情况。

要验证是否是这种情况,您可以尝试在代码中的某处为UnobservedTaskException 添加处理程序:

TaskScheduler.UnobservedTaskException += (sender, e) => e.SetObserved();

在一个根本不使用异步的小项目中执行此操作 - 我怀疑它会以同样的方式失败。如果您可以调整您的安全设置以使其正常工作,那么其余的可能从那时起就可以正常工作。

【讨论】:

  • AsyncCtpLibrary.dll 已自动部署。我添加了 InnerException 详细信息,但它似乎是一个中等信任问题:(
  • 我已经实现了您的验证,并尝试按照一些文章的建议包装[SecuritySafeCritical] 方法。事情总是失败,所以我给你发了一封电子邮件,告诉你如何与团队取得联系。
  • @Thorarin 你成功了吗?
猜你喜欢
  • 2012-02-05
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
相关资源
最近更新 更多