【发布时间】:2018-02-02 13:53:11
【问题描述】:
我正在考虑在我的Web API 2.x 应用程序中使用ExceptionLogger 或ExceptionFilterAttribute。我的 OR/M 是 Entity Framework 6 和 AutoFac 作为我的 IoC。
考虑下面的异常属性:
public class ApiExceptionFilterAttribute : ExceptionFilterAttribute
{
public IDbContext MyContext { get; set; }
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
base.OnException(actionExecutedContext);
// some code
MyContext.SaveChanges();
}
}
我认为,如果我的应用程序抛出任何异常 OnException 方法将被调用,我需要一个新的 DbContext 实例来保存错误日志,但我的 AutoFac DbContext 配置是 InstancePerRequest 所以我认为AutoFac 会将MyContext 解析为共享DbContext。
这是我对DbContext 的AutoFac 配置:
builder.RegisterType<DbContext>()
.As<IDbContext>()
.InstancePerRequest();
我怎样才能让AutoFac 重新爱上DbContext 作为ApiExceptionFilterAttribute 的新实例?
【问题讨论】:
标签: entity-framework asp.net-web-api asp.net-web-api2 autofac