这个异步任务方法有什么问题?

2023-12-11

这只是一个简单的异步任务,但我总是遇到奇怪的编译器错误。此代码来自 ASP.NET 4 项目中的 Web API 服务,使用 VS2010 创建。

即使ContinueWith(非泛型)隐式返回Task,但此错误仍然存​​在。

Code:

public class TestController : ApiController
{
       public Task<HttpResponseMessage> Test()
       {
            string url = "http://www.stackoverflow.com";
            var client = new HttpClient();

            return client.GetAsync(url).ContinueWith<HttpResponseMessage>((request) =>
            {
                // Error 361 'System.Threading.Tasks.Task' does not contain a definition
                // for 'Result' and no extension method 'Result' accepting a first argument
                // of type 'System.Threading.Tasks.Task' could be found
                // (are you missing a using directive or an assembly reference?)
                var response = request.Result;
                response.EnsureSuccessStatusCode();

                // Error 364 Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>' to 'System.Net.Http.HttpResponseMessage'
                return response.Content.ReadAsStringAsync().ContinueWith<HttpResponseMessage>((read) =>
                {
                    return new HttpResponseMessage();
                });
            });
        }
}

364 错误是完全正常的,因为您返回的是Task<Task<HttpResponseMessage>>代替Task<HttpResponseMessage>。一旦修复,361 错误也会消失。

所以你可以Unwrap结果:

public Task<HttpResponseMessage> Test()
{
    string url = "http://www.stackoverflow.com";
    var client = new HttpClient();
    return client.GetAsync(url).ContinueWith(request =>
    {
        var response = request.Result;
        response.EnsureSuccessStatusCode();
        return response.Content.ReadAsStringAsync().ContinueWith(t =>
        {
            var result = new HttpResponseMessage();
            response.CreateContent(t.Result);
            return response;
        });
    }).Unwrap();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这个异步任务方法有什么问题? 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何在Jcreator中调试? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我使用的是 JCreator 版本 5 0 0 10 而且我不知道如何调试程序 能否请您
  • 根据文本内容查找html元素

    我有一个像这样的html代码 div span TV span div 我想找到这个span通过具有文本 TV 的 documentObject 例如getElementById等等 类似的东西getElementByText 我知道可以通
  • 在 C# 中指定范围

    我有 6 个范围 1000000 5000000 50000001 10000000 10000001 25000000 25000001 50000000 50000001 75000000 75000001 100000000 现在我该
  • h5py 将虚拟数据集读取到 NumPy 数组时出错

    我正在尝试从使用 h5py 创建的虚拟 HDF 数据集加载数据 但在正确加载数据时遇到一些问题 这是我的问题的一个例子 import h5py import tools as ut virtual h5py File ut params p
  • C# 泛型方法和动态类型问题[重复]

    这个问题在这里已经有答案了 我有一个通用方法声明如下 public void Duplicate
  • SurfaceView 和 ImageView 的区别

    我想知道SurfaceView和ImageView有什么区别以及它们的使用场景 两者似乎都是一样的 如果有我可能错过的正确链接 请指导我 表面视图的一些优点和差异 更好的渲染机制 线程可以在不使用处理程序的情况下更新表面的内容 这有助于提高
  • Angular 中的子父母沟通最佳实践

    我正在努力提高 Angular 的水平 并且想了解儿童与家长之间沟通的最佳实践 我当前想要使用的应用程序是 Angular 6 我知道我可以使用 ViewChild Output 或创建服务在子父组件之间进行通信 还有其他方式进行沟通吗 如
  • 无法让OkHttp的response.body.toString()返回字符串

    我正在尝试使用 OkHttp 获取一些 json 数据 但当我尝试记录时无法弄清楚为什么response body toString 我得到的是Results com squareup okhttp Call RealResponseBod
  • 在最新的 MapBox SDK 6.7 中旋转和更改标记的位置

    Mapbox Android SDK 6 7 0 我们正在开发的应用程序的要求是 我们必须在不同的 LatLng 位置添加多个标记 并使用一些方位旋转它们 在旧的mapbox版本 4 2 1 中 我们可以毫无问题地做到这一点 Working
  • 如何在可编码类型中使用 Any

    我目前正在与Codable输入我的项目并面临问题 struct Person Codable var id Any id上面的代码可以是String or an Int 这就是原因id属于类型Any 我知道Any is not Codabl
  • 在 ActionScript 3 中加密/解密图像

    我正在开发一个移动应用程序 其中包含 本质上 图片消息功能 我需要使用简单的纯文本密码对图像进行加密 解密 由于所捕获图像的性质 加密和解密过程在设备上进行是 至关重要的 在听完有关 Flex 移动开发的演示后 我决定使用 Flex SDK
  • 为什么查询不会因子查询中不存在的列而失败?

    我在查询中拼写错误 并遇到了 MySQL 的奇怪行为 create table aaa id bigint auto increment primary key amount int not null other column varcha
  • sklearn 绘制带有标签的混淆矩阵

    我想绘制一个混淆矩阵来可视化分类器的性能 但它仅显示标签的数量 而不显示标签本身 from sklearn metrics import confusion matrix import pylab as pl y test business
  • 是否有可能并且以良好的形式在 Angular 中重用相同的数据工厂?

    我正在查看 Angular 的 CRUD 通用工厂 我目前更喜欢使用它而不是使用服务 app factory dataFactory http function http var urlBase odata ContentTypes The
  • Vue 3 外部组件/插件在运行时加载

    我正在设计一个架构Vue 3具有基于分布式模块所有权的应用程序 模块系统将用插件来表示 似乎是最合适的解决方案 允许vuex模块和vue router动态注入 每个此类模块 插件都将由在独立存储库中工作的专门团队开发 我们不能使用npm每个
  • 重定向 stdin 和 stdout,其中 stdin 首先关闭

    这实际上与我已经回答的另一个问题有关 这个问题在这里 将一个进程对象的标准输出重定向到另一个进程对象的标准输入 我的问题是 我认为 获取输入的程序应该在程序输出之前退出 这是与我正在做的事情等效的 bash tccat i dev sr0
  • 如何让 jqGrid 重新加载到服务器?

    我们使用网格上的 jqGrid 导航器重新加载按钮loadonce设置为 true 重新加载按钮目前不会返回服务器获取数据 我们如何才能让重新加载去服务器获取最新数据 我相信我们可以使用beforeRefresh设置网格的回调data to
  • 任务“:app:validateSigningDebug”执行失败。 java.util.concurrent.ExecutionException:

    我刚刚创建了一个新的 flutter 应用程序 当我尝试在模拟器上运行它时 会出现以下错误消息 在调试模式下在为 x86 构建的 Android SDK 上启动 lib main dart 运行 Gradle 任务 assembleDebu
  • Angular:如何监视 $element.on

    我有一个指令 它在其中做了类似的事情link功能 angular module myApp directive barFoo function return restrict E link function scope element el
  • 这个异步任务方法有什么问题?

    这只是一个简单的异步任务 但我总是遇到奇怪的编译器错误 此代码来自 ASP NET 4 项目中的 Web API 服务 使用 VS2010 创建 即使ContinueWith 非泛型 隐式返回Task 但此错误仍然存 在 Code publ