【问题标题】:Return HttpStatusCode.BadRequest from Initialize method从 Initialize 方法返回 HttpStatusCode.BadRequest
【发布时间】:2017-06-30 10:38:42
【问题描述】:

我想从 Initialize 方法返回 BadRequest 状态码。我明白,我怎样才能从任何动作(返回新的 HttpStatusCodeResult(HttpStatusCode.BadRequest) )中做到这一点,但如何从初始化中做到这一点?我尝试以下方法:

requestContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;

但我明白了

异常详细信息:System.NullReferenceException:没有对象引用 设置为对象的实例。

如果我不打电话

base.Initialize(requestContext);

【问题讨论】:

    标签: asp.net-mvc http-status-codes asp.net-mvc-controller


    【解决方案1】:

    这是设计使然,您应该重写 Initialize 方法并在基本方法上调用它,以便控制器获取 http 上下文。

    https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.initialize(v=vs.118).aspx

    【讨论】:

      【解决方案2】:

      你可以使用HttpContext.Current之类的;

      HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.BadRequest; HttpContext.Current.Response.End(); return;
      

      【讨论】:

      • 返回一个空白页面
      • 如果您不想要空白页面,只需更改状态即可。另一个有趣的点,如果你想处理页面而不返回空,你有什么理由不调用“base.Initialize”?
      • 我只想返回一个页面,当我们调用 return new HttpStatusCodeResult(HttpStatusCode.BadRequest)
      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2012-09-20
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多