C# 基本方法未在mvc 5中激发

C# 基本方法未在mvc 5中激发,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 5,我有以下基本控制器 public class BaseController : Controller { protected override void Execute(RequestContext requestContext) { base.Execute(requestContext); } } 实施是 public class HomeController : BaseController { } 我们从mvc3升级到mvc5,在mvc5中

我有以下基本控制器

public class BaseController : Controller
{
   protected override void Execute(RequestContext requestContext)
   {

          base.Execute(requestContext);
   }
}
实施是

  public class HomeController : BaseController { }

我们从mvc3升级到mvc5,在mvc5中,这种方法没有被调用,需要在这里做什么?

现在还不完全清楚您的目标,但这里有几个问题。您的普通控制器是否继承BaseController

public class MyController : BaseController
我不明白这句话的意思

var global = requestContext.HttpContext.Request.QueryString["global"] == null ? true : false;
你设置了这个值,然后什么都不做。是否要将此值存储在基本控制器中,以便可以从所有其他控制器访问它

当然,如果查询字符串中缺少global,那么它应该是假的,而不是真的

public class BaseController : Controller
{
   public bool isGlobal { get; private set; }

   protected override void Execute(RequestContext requestContext)
   {
      this.isGlobal = requestContext.HttpContext.Request.QueryString["global"] == null ? false : true;
      base.Execute(requestContext);
   }
}

现在还不完全清楚你想要什么,但这里有几个问题。您的普通控制器是否继承BaseController

public class MyController : BaseController
我不明白这句话的意思

var global = requestContext.HttpContext.Request.QueryString["global"] == null ? true : false;
你设置了这个值,然后什么都不做。是否要将此值存储在基本控制器中,以便可以从所有其他控制器访问它

当然,如果查询字符串中缺少global,那么它应该是假的,而不是真的

public class BaseController : Controller
{
   public bool isGlobal { get; private set; }

   protected override void Execute(RequestContext requestContext)
   {
      this.isGlobal = requestContext.HttpContext.Request.QueryString["global"] == null ? false : true;
      base.Execute(requestContext);
   }
}

这个问题的标题将我引向这里,但它实际上与我遇到的问题不同(即基本控制器类中被重写的
Execute
方法在MVC4/5网站中未被调用)

如果这也是你面临的问题,这就是我找到的解决方案。随着异步支持的引入,调用这些方法的方式似乎发生了变化。您不应该重写
Execute
方法,而应该重写
OnActionExecuted
方法

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
}

这个问题的标题将我引向这里,但它实际上与我遇到的问题不同(即基本控制器类中被重写的
Execute
方法在MVC4/5网站中未被调用)

如果这也是你面临的问题,这就是我找到的解决方案。随着异步支持的引入,调用这些方法的方式似乎发生了变化。您不应该重写
Execute
方法,而应该重写
OnActionExecuted
方法

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
}

你的控制权不是来自basecontroller或其他什么?它击中basecontroller但没有击中execute方法。你能给我们看一下你的实现吗?添加了实现,应用程序中的每个控制器都实现了basecontrollerur控件没有到达basecontroller或其他东西?它击中了basecontroller,但没有击中执行方法。您可以向我们展示您的实现吗?添加了实现,应用程序中的每个控制器“肯定”实现basecontroller你不知道有关
全局
标志的业务规则。我补充说,这是因为,有时此应用程序会从另一个供内部使用的windows应用程序调用,这个执行方法在任何时候都不会触发的问题,“当然”是什么原因你不知道有关
全局
标志的业务规则。我之所以添加这一点是因为,有时此应用程序会从另一个供内部使用的windows应用程序调用,这个问题是,此执行方法在任何时候都不会触发,原因是什么