【问题标题】:Web Api - Initialize() is not being calledWeb Api - Initialize() 未被调用
【发布时间】:2015-07-31 11:32:58
【问题描述】:

我正在使用 web api 2,并且有一个控制器继承自另一个控制器,该控制器覆盖了 ApiController 的 Initialize() 方法。

所以:

public class ControllerA : Controller B

然后:

public class ControllerB : ApiController
{  
   protected override void Initialize(HttpControllerContext controllerContext)
    {
        var httpContext = GetHttpContext(controllerContext.Request);
        // Do some stuff
        base.Initialize(controllerContext);
    }
 }

但是当我调试时,初始化的断点永远不会被命中。其他断点命中,但不在此方法上。有什么想法吗?

【问题讨论】:

  • Controller B 可能应该是一个词,但我怀疑这是造成它的原因 - 可能是一个错字。
  • 为什么不简单地使用constructor 而不是使用Initialize 方法?构造函数必须被调用。
  • 向ControllerB发出请求会被调用吗?
  • 我知道在 ASP.Net 中,global.asax 中的一些覆盖不会到达断点,因为它在这个过程中为时过早。您是否尝试过在 Visual Studio 中写入调试控制台以查看它是否实际运行,但只是没有到达断点?
  • @Orphid 是的,这是一个错字 - 我将我的初始化添加到 controllerA 并直接从 ApiController 继承,但它仍然不会命中。这让我发疯了。

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


【解决方案1】:

Initialize 方法在调用控制器时不像构造函数。 应该手动调用它来将我的控制器上下文重新初始化为另一个类。

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2019-03-30
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多