我正在创建一个asp.net web API项目。 这将是一项日志服务。
应用程序将通过异步调用来使用此服务。它主要是“火与忘”的原则。我不希望退回服务中的任何内容。 现在我的问题是我应该使用'async Task'或'async void'作为返回类型创建web-API方法。
答案 0 :(得分:3)
我不希望退回服务中的任何内容。
HTTP WebAPI必须返回一些内容,至少是一个状态代码。这就是HTTP的工作方式。
我的问题是我应该使用' async Task'创建web-API方法。 OR' async void'作为返回类型。
如the referenced article所述,您应该避免Get-Content -Path C:\folder\thisisalog.log -Tail 1 -Wait | where {if ($_ -match "Remote_http") {write-host "run code here"}}
。您应该只将async void
用于事件处理程序(或逻辑上事件处理程序的事物)。控制器操作不是事件处理程序。因此,您应该使用async void
。
答案 1 :(得分:1)
using System.Web.Http;
using AysncTask = System.Threading.Tasks.Task;
[HttpPut]
[Route("api/cleardata/{id}/{requestId}/")]
public async AysncTask ClearData(Guid id, Guid requestId)
{
try
{
await AysncTask.Run(() => DoClearData(id, requestId));
}
catch (Exception ex)
{
throw new Exception("Exception in ClearData", ex);
}
}
答案 2 :(得分:0)
异步任务当然 - 这使您的服务器更具可扩展性。 Here J里希特解释了为什么(我认为没人能更好地解释)。