为什么在ASP.NET Web API 2中没有调用ExecuteResult()方法?

时间:2014-08-28 14:57:19

标签: asp.net-mvc asp.net-web-api

我正在创建一些自定义操作结果,如下所示。

public class MyActionResult : ActionResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Status = "my status";
        context.HttpContext.Response.StatusCode = 400;
        context.HttpContext.Response.AppendHeader("MyHeader", "bingo");
        context.HttpContext.Response.Write("some content");
        context.HttpContext.Response.End();
    }
}

我的行动方法如下:

[HttpGet]
[Route("check/{id}")]
public MyActionResult Check(string id)
{
    return new MyActionResult();
}

我在ExecuteResult()中设置了一个断点但它从未命中过。我像这样测试Web API:

http://localhost:22247/api/v1/check/123

我希望看到我在ExecuteResult()方法中设置的内容,标题等。但实际结果始终是一个空的内容如下的JSON文件。状态代码始终为200。

{}

为什么不执行ExecuteResult()方法?

1 个答案:

答案 0 :(得分:2)

Web API从ASP.NET MVC借用了一些想法,并从ASP.NET MVC命名空间中复制了一些类型名称。但是,Web API与ASP.NET MVC完全不同。它们不应该以天真的混合方式使用。