内联代码导致ASP.NET在当前页面内插入500页

时间:2017-03-31 18:30:18

标签: asp.net webforms custom-errors

我在.ascx中有一些看起来像这样的代码:

<%
 int a = 0;
 int b = 5;
 int c = b/a;
 %>

如您所料(按0除以)引发500错误。

CustomErrors看起来像这样

    <customErrors mode="On" redirectMode="ResponseRewrite">
        <error statusCode="500" redirect="/500.aspx" />
    </customErrors>

我弄乱了我试图击中的页面。查看源代码,我看到正常页面的一半,然后500页面跟随它。

    <div class="mapTextOverlay" style="width:448px;padding-left:232.96px;">

    [main page abruptly ends here and the 500 page starts]

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head"><title>
        500
    </title>

    [etc.]

因此服务器传输发生在页面渲染的中间。

如果出现500错误,如何防止部分页面渲染的可能性?

  • 这只发生在内联代码中,如果错误在代码隐藏中,则错误显示正常。
  • 代码中没有任何内容调用Response.Flush()
  • Response.BufferOutput为true
  • 代码正在设置一个Response.Filter,但我尝试对其进行评论并且没有修复它

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么会这样,但修复结果相当简单。

Response.Clear();放入500页的Page_Load()