部分信任环境中的异步CTP

时间:2011-06-15 06:17:57

标签: android .net android-asynctask

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

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

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

'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1'的类型初始值设定项引发了异常。

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

更新: 我也包含了InnerException细节:

  

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

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

1 个答案:

答案 0 :(得分:2)

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

TypeInitializerException的内部例外是什么?

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

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

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

在一个完全不使用异步的小项目中这样做 - 我怀疑它会以同样的方式失败。如果您可以调整安全设置以使其有效,那么其余部分可能只适用于此。