设置响应状态代码会导致不必要的错误文本在自定义错误页的顶部
UPDATE:设置响应状态代码会导致不必要的错误文本在自定义错误页的顶部
为了确保正确的状态代码返回给浏览器,该error.aspx有这样一行:
<% Response.StatusCode = 500; %>
删除它删除不需要的文本,但我想要正确的状态码,所以我想这是新的问题......怎么样?
设置响应状态代码有相同的结果:
HttpContext.Current.Response.StatusCode = 500;
将更新问题称号。
PRE-UPDATE:
由于一些遗留代码/配置,我们有一个不太寻常的自定义错误页面设置,它处理异常的global.asax
并使用Server.Transfer()
提出相应的.aspx错误页面,像这样:
public void Application_Error(object sender, EventArgs e)
{
// abbreviated to clear out logging and some other logic that determines which error page to show
HttpContext.Current.Response.Clear();
HttpContext.Current.Server.ClearError();
var context = HttpContext.Current;
if (context != null)
{
var errorPage = "~/ErrorPages/error.aspx";
context.Server.Transfer(errorPage);
}
}
的问题是,当error.aspx被示出为一个远程用户错误消息(和一个新的开口body标签...)被预设于页面,因此的第一行页面是无风格的文字说:
The page cannot be displayed because an internal server error has occurred.
不理想,而且,虽然也许我的谷歌搜索错误的东西,它似乎并没有是是有据可查的或经常讨论的一个问题。
任何想法欢迎。 error.aspx代码是非常通用的,但我很高兴发布,如果它可能有帮助 - 请仅评论。
解决的办法是将其添加到网络中。配置:
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
基于这样的回答:
IIS7 Overrides customErrors when setting Response.StatusCode?
而且这个博客帖子:
http://blogs.iis.net/ksingla/what-to-expect-from-iis7-custom-error-module
我在自定义登录和处理错误方面做了很多工作。学到了很多。而现在我在Linux上并且无法给出确切的响应,但我建议看看周围的HttpResponse访问者和HttpResponse.Write()方法。它会在不假装的情况下替换错误页面的全部内容。
此外,您可以在web.config文件中设置此页面。
补充: 放入你的web.config这样的:
<configuration>
<system.webServer>
<httpErrors>
<remove statusCode="500" />
</httpErrors>
</system.webServer>
</configuration>
你有没有试过End the request?
HttpContext.Current.Response.End()
到Response.End MSDN():将所有当前缓冲输出到客户端,停止页面的执行,并引发EndRequest事件。
嗨@Siva戈帕尔,我没有尝试,和其他各种东西。原来我需要在web.config中设置existingResponse。看到我的答案。无论如何感谢你的想法。 – GP24