我有一个带有此签名的可移植类库中的异步方法:
private async Task<T> _Fetch<T>(Uri uri)
Run Code Online (Sandbox Code Playgroud)
它获取一个被回送为具体类型T的资源.
我正在使用第三方缓存库(Akavache),它需要一个Func<T>参数作为其中一个,并试图以这种方式这样做:
await this.CacheProvider.GetOrCreateObject<T>(key,
async () => await _Fetch<T>(uri), cacheExpiry);
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
无法将异步lambda表达式转换为委托类型'
System.Func<T>'.异步lambda表达式可能会返回void,Task或者Task<T>没有一个可以转换为'System.Func<T>'.
我已经尝试了各种Func<T>不带任何运气的排列,我能让代码工作的唯一方法就是Func<T>阻塞:
await this.CacheProvider.GetOrCreateObject<T>(key,
() => _Fetch<T>(uri).Result, cacheExpiry);
Run Code Online (Sandbox Code Playgroud)
哪个死了我的应用程序.
关于我误入歧途的任何指示?
我最近将具有Web角色和辅助角色的Azure云服务升级到SDK的v2.7.
本地调试很有用.
当我尝试从VS 2015社区内发布时,该过程失败并在构建输出中出错:
6>Done building project "Cloud.ccproj" -- FAILED.
6>
6>Build FAILED.
========== Build: 5 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
下降到msbuild我可以看到更详细的输出并注意以下内容:
Failed to produce diagnostics extension's config for Cloud.WebRoleContent\diagnostics.wadcfgx.
Error : Value cannot be null. Parameter name: input
Run Code Online (Sandbox Code Playgroud)
从Web和辅助角色中删除diagnostics.wadcfgx文件实际上解决了这个问题并允许我发布,但是我更喜欢保留我的诊断.
通过UI添加它们会让我遇到与上面相同的错误.
还有其他人遇到过这个吗?