我发现我只把返回Task的方法InterceptAsynchronous改成异步,await async,就正常了。但async void,异常会有些问题,所以改成如下方式,表现正常。
///
/// 拦截返回结果为Task的方法
///
///
public void InterceptAsynchronous(IInvocation invocation)
{
if (TryBegin(invocation))
{
invocation.ReturnValue = InternalInterceptAsynchronous(invocation);
}
else
{
invocation.Proceed();
}
}
引用包
完整代码
using System.Data.Common;
using System.Linq;
using System.Threading.Tasks;
using Castle.DynamicProxy;
using FreeSql;
using LinCms.Aop.Attributes;
using Microsoft.Extensions.Logging;
namespace LinCms.Middleware
{
public class UnitOfWorkInterceptor : IInterceptor
{
private readonly UnitOfWorkAsyncIn