这里有一个奇怪的问题.每个人都知道,如果您使用web.config的customErrors部分来创建自定义错误页面,那么您应该将其设置Response.StatusCode为适当的.例如,如果我创建一个自定义404页面并将其命名为404.aspx,我可以放入<% Response.StatusCode = 404 %>内容以使其具有真正的404状态标题.
到目前为止跟着我?好.现在尝试在IIS7上执行此操作.期间我无法上班.如果Response.StatusCode在自定义错误页面中设置,IIS7似乎完全覆盖自定义错误页面,并显示其自己的状态页面(如果您已配置一个.)
有没有其他人看到这种行为,也许还知道如何解决它?它在IIS6下工作,所以我不知道为什么会发生变化.
我们在前端使用OpenWeb js库,当发生某些类型的错误时,他们需要.NET中间层向他们发送特定的HTTP头状态代码.我试图通过这样做来实现这一点:
public ActionResult TestError(string id) // id = error code
{
Request.Headers.Add("Status Code", id);
Response.AddHeader("Status Code", id);
var error = new Error();
error.ErrorID = 123;
error.Level = 2;
error.Message = "You broke the Internet!";
return Json(error, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
它有点中途了.请参见屏幕截图: http状态代码http://zerogravpro.com/temp/pic.png
注意我在响应头中获得了400的状态代码,但我确实需要请求头中的400.相反,我得到"200 OK".我怎样才能做到这一点?
我进行调用的URL结构很简单:/ Main/TestError/400