加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – 设置响应状态代码会在自定义错误页面顶部导致不需要的错

发布时间:2020-12-16 03:44:46 所属栏目:asp.Net 来源:网络整理
导读:更新: 为确保将正确的状态代码返回给浏览器,error.aspx具有以下行: % Response.StatusCode = 500; % 删除它会删除不需要的文本,但我想要正确的状态代码,所以我想这是一个新问题……如何!? 设置响应状态代码具有相同的结果: HttpContext.Current.Respons
更新:

为确保将正确的状态代码返回给浏览器,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时,页面会附加一条错误消息(以及一个新的开放正文标记…),因此该页面的第一行是无样式的文本说:

06003

虽然也许我正在使用Google搜索错误的内容,但它似乎并不是一个记录良好或经常讨论的问题.

欢迎任何想法. error.aspx代码非常通用,但我很乐意发布它是否有帮助 – 请注释.

解决方法

修复是将此添加到web.config:

<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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读