如何在网络核心Web应用程序中创建任务包装器或中间件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在网络核心Web应用程序中创建任务包装器或中间件?相关的知识,希望对你有一定的参考价值。
这是我的解决方案中非常常见的情况:
private IActionResult MyAction()
{
//Run in background
Task.Run(async () =>
{
try
{
await //..
}
catch (Exception ex)
{
//Log exception
}
});
return new StatusCodeResult(StatusCodes.Status200OK);
}
因此,在我的所有操作中,我使用相同的日志代码重复相同的try catch,我正在尝试执行以下操作:
private IActionResult MyAction()
{
Task.Run(MyExceptionHandledAsyncTask(async () =>
{
await //..
}));
return new StatusCodeResult(StatusCodes.Status200OK);
}
MyExceptionHandledAsyncTask处理作为参数传递的任务/操作中的任何异常。
我一直在努力,但我正在努力处理返回的数据类型,我不知道该怎么做。
如何控制此模式并避免重复代码?
答案
您只需创建一个接收Func <Task>作为参数的方法:
public void Test()
{
RunSafely(() => Task.Delay(2000));
}
public Task RunSafely(Func<Task> job)
=> Task.Run(async () =>
{
try
{
await job();
}
catch (Exception)
{
//todo
}
});
以上是关于如何在网络核心Web应用程序中创建任务包装器或中间件?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 ASP.NET Web API 中创建中间件?我参考了网上的资料并尝试过,但没有成功
使用 IIS 在 Delphi 2009 中创建 REST Web 服务
如何在 Spring Boot 客户端应用程序中创建不共享底层网络连接的套接字