未调用OnActionExecuted

时间:2017-07-07 07:54:16

标签: c# asp.net-mvc action-filter

我有一个MVC应用程序,现在流量很大。我遇到FilterAttribute问题。有时OnActionExecuted不会被调用。是的,我在过滤器上编写和读取数据库,但我必须这样做。当我调试时,我从来没有遇到过这个问题,但是有很多用户遇到了这个问题,所以我添加了log to write to file来跟踪经常面临这个问题的一些用户的问题。现在我的过滤器大致如下:

public class ManageReportLockAttribute
    : FilterAttribute, IActionFilter
{
    private ILogger Logger { get; set; }

    public ManageReportLockAttribute()
    {       
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Logger.Log(controllerName, actionName, "Begin OnActionExecuting.");

        ............................

        Logger.Log(controllerName, actionName, "Complete OnActionExecuting.");
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {       
        Logger.Log(controllerName, actionName, "Begin OnActionExecuted.");

        .....................

        Logger.Log(controllerName, actionName, "Complete OnActionExecuted.");
    }
} 

从日志中我看到"完成OnActionExecuting。" 已记录以执行特定操作,而获取"开始OnActionExecuted。" 进行同样的操作,我再次"开始OnActionExecuting。" 进行下一步行动。从数据库中也可以清楚地看出,OnActionExecuted未根据值调用。它并不总是发生,但有时也会发生。对于一个特定的Action方法,它也不是一致。这怎么可能?我该如何解决这个问题?

0 个答案:

没有答案