基于过滤器的工作单元无法在Web API上使用异步方法(文件上载)

时间:2013-10-30 11:49:15

标签: c# asp.net asynchronous asp.net-web-api

这是一个远景,因为我没有通过谷歌搜索找到太多。

我在WebAPI项目中使用工作单元和存储库模式,使用Ninject来管理IoC。为了处理多个文件上传,我有一个异步方法,虽然它确实可以处理文件,但不会保存到数据库。

问题似乎是当调用await来拉出文件时,OnActionExecuted的工作单元过滤器会触发。

var files = await _fileHandler.SaveMultipartStream();

public class UnitOfWorkCommitAttribute : ActionFilterAttribute
{
    private IUnitOfWork _uow;

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        _uow = actionExecutedContext.Request.GetDependencyScope().GetService(typeof(IUnitOfWork)) as IUnitOfWork;

        if (actionExecutedContext.Exception == null)
        {
            _uow.Commit();
        }
    }
}

我有什么想法可以改进或调整我的方法以弥补这种影响?欢迎任何建议!

0 个答案:

没有答案