![](/img/trans.png)
[英]How to have only one thread for fire and forget task in asp.net webapi?
[英]Fire-forget and One-Way Calls in ASP.NET WebApi
我完全理解HTTP世界不是单向调用的最佳选择,WebApi最适合HTTP冗长通信。 毫无疑问,WCF是这里的赢家。 但是,如果你已经有一个暴露了一堆动词的ApiController,在某些时候你也需要一个单向调用呢? 并且您不希望为此托管/维护其他服务(WCF)。
Task<HttpResponseMessage> response = client.PostAsJsonAsync<Log>("api/log", log)
如果你没有处理响应,那么你就会遇到类似于点火的东西。 这是WebApi中的唯一方法还是另一种解决方案?
为什么不这样调用并忽略返回的任务?
client.PostAsJsonAsync<Log>("api/log", log);
我使用所有调用执行此操作,并在响应管道中使用处理程序以在必要时处理响应。
您最好的选择是启动一个新任务并立即发送响应, 而不是返回任务:
public void PostDoFireAndForget() // and NOT public Task PostDoFireAndForget()
{
Task.Factory.StartNew
(() =>
{
// ... start the operation here
// make sure you have an exception handler!!
}
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.