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