我完全理解,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!!
}
);
}