部分信任环境上的异步CTP

问题描述

| 有谁知道是否可以“绑定部署”异步CTP? 由于Async的大部分基本上是编译器的技巧,所以我认为预编译应用程序并将其部署到未安装Async CTP的服务器上可能会起作用。不幸的是,这似乎并不简单。当我尝试调用异步方法时,出现以下错误消息:
Task<Result> task = _checker.CheckAsync(input);
\'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1'的类型初始值设定项引发了异常。 这确实不是我所期望的错误类型,但是也许可以将一些替换程序集部署到Bin目录中以解决此问题?我无法在此(生产)计算机上安装异步CTP。 更新: 我还包括了InnerException详细信息:   System.MethodAccessException:尝试   通过安全透明方法   \'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() 这似乎是中等信任问题,而不是异步问题?     

解决方法

        您还需要部署AsyncCtpLibrary.dll。我希望这就是全部...您是否已将其与应用程序一起部署? ѭ2的内部例外是什么? 编辑:正如您所说,这看起来像是中等信任问题,无论如何都不能通过安装整个东西来解决。如果您的情况有某些不安全的情况,直接向团队提出(如果您愿意,我可以这样做)可能值得。 为了验证是否是这种情况,您可以尝试在代码中的某处添加一个用于
UnobservedTaskException
的处理程序:
TaskScheduler.UnobservedTaskException += (sender,e) => e.SetObserved();
在一个根本不使用异步的小项目中执行此操作-我怀疑它会以相同的方式失败。如果您可以调整您的安全性设置以使其起作用,则其余的设置可能从那时起才起作用。