我完全理解HTTP world不是单向调用的最佳选择,而WebApi是为HTTP详细通信而设计的最佳选择。但是,如果您已经有一个公开了一堆谓词的ApiController,并且在某些情况下还需要一个单向调用,该怎么办呢?
Task<HttpResponseMessage> response = client.PostAsJsonAsync<Log>("api/log", log)如果你不处理响应,那么你就会得到类似于fire-and-forget的东西。这是WebApi中的唯一方法,还是有其他解决方案?
发布于 2012-12-19 03:21:06
为什么不像这样调用并忽略返回的任务呢?
client.PostAsJsonAsync<Log>("api/log", log);我对所有的调用都这样做,并在必要时使用响应管道中的处理程序来处理响应。
发布于 2012-12-19 01:39:26
最好的方法是启动一个新的任务并立即发送响应,而不是返回任务:
public void PostDoFireAndForget() // and NOT public Task PostDoFireAndForget()
{
Task.Factory.StartNew
(() =>
{
// ... start the operation here
// make sure you have an exception handler!!
}
);
}https://stackoverflow.com/questions/13937407
复制相似问题