【问题标题】:How can send back my own 404 error message in ASP.NET , but as json?如何在 ASP.NET 中发送回我自己的 404 错误消息,但作为 json?
【发布时间】:2009-09-15 06:42:42
【问题描述】:

我正在尝试以Json 的形式发回一条简单的错误消息,而HTTP code 的形式为404

所以我开始编写自己的IExceptionFilter 来检查异常。为了简单起见,如果异常抛出的类型为ResourceNotFoundException,那么我将代码设置为404。否则如果500,其他一切。

现在,问题是 .. 返回默认的 IIS7 404 错误消息 :( 我的代码被称为 .. 但它似乎绕过它(稍后在管道中)...

有什么我需要做的吗?

我需要打开自定义错误处理(在网络配置中)吗?


编辑: 我正在尝试做 Twitter 所做的事情。他们的Http Response Code documentation 展示/解释了一些示例,他们如何处理 404 等。我想在我的 MVC 应用程序中这样做。

编辑 2: 我完成的代码列在here,供大家参考:)

【问题讨论】:

  • 发送 JSON 真的是您想要做的吗?接收器读取 404 状态然后处理会不会比内部更好?我的意思是,对于客户端不知道的 404,我很难看到哪些有意义的数据会进入 JSON 数据包。
  • Json 或 Xml。无论哪种方式,我都需要发回 404 并且消费者需要处理它。例如,这就是 twitter 所做的。

标签: asp.net-mvc json exception-handling http-status-code-404 http-response-codes


【解决方案1】:

在处理异常时,是否将 ExceptionHandled 设置为 true?

这是一个简单的例子...

HandleException(ActionExecutedContext filterContext)
{
  Exception exception = filterContext.Exception;

  //Check if our exception has been handled.
  if (filterContext.ExceptionHandled == false)
  {
    //Do your exception stuff
    filterContext.Result = YourExceptionMessageAsAnActionResult();
    //Set it as null.
    filterContext.ExceptionHandled = true;
    filterContext.HttpContext.Response.Clear();
  }
}

【讨论】:

  • 是的,我相信是的。我还添加了指向我已完成的代码的链接。请你检查一下好吗?
  • 我也回复了那条消息。您的代码中似乎有一个小错字,但我确信这只是问题代码中的一个错字,而不是您的课程中的错字。
  • 是的,这只是一个问题错字,因为我减少了真正的逻辑以求简洁。 脸红.
猜你喜欢
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 2014-05-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2021-09-01
相关资源
最近更新 更多