首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET WebApi中的Fire-forget和单向调用

ASP.NET WebApi中的Fire-forget和单向调用
EN

Stack Overflow用户
提问于 2012-12-19 00:33:13
回答 2查看 7.4K关注 0票数 5

我完全理解HTTP world不是单向调用的最佳选择,而WebApi是为HTTP详细通信而设计的最佳选择。但是,如果您已经有一个公开了一堆谓词的ApiController,并且在某些情况下还需要一个单向调用,该怎么办呢?

代码语言:javascript
复制
Task<HttpResponseMessage> response = client.PostAsJsonAsync<Log>("api/log", log)

如果你不处理响应,那么你就会得到类似于fire-and-forget的东西。这是WebApi中的唯一方法,还是有其他解决方案?

EN

回答 2

Stack Overflow用户

发布于 2012-12-19 03:21:06

为什么不像这样调用并忽略返回的任务呢?

代码语言:javascript
复制
client.PostAsJsonAsync<Log>("api/log", log);

我对所有的调用都这样做,并在必要时使用响应管道中的处理程序来处理响应。

票数 6
EN

Stack Overflow用户

发布于 2012-12-19 01:39:26

最好的方法是启动一个新的任务并立即发送响应,而不是返回任务:

代码语言:javascript
复制
public void PostDoFireAndForget() // and NOT public Task PostDoFireAndForget()
    {
        Task.Factory.StartNew
            (() =>
                {
                    // ... start the operation here
                    // make sure you have an exception handler!!
                }

            );

    }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13937407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档