【问题标题】:Getting error "Internet Explorer cannot display the webpage" in asp.net在 asp.net 中出现错误“Internet Explorer 无法显示网页”
【发布时间】:2012-07-03 15:02:39
【问题描述】:

我有一个导致“Internet Explorer 无法显示网页”错误的代码块。当我单击提交按钮时,在未选中任何单选按钮的情况下,网页状态栏显示“等待主机响应”,然后显示“Internet Explorer 无法显示网页”。当我在 Visual Studio 中浏览代码时,代码执行得很好,并且没有执行任何 catch 块。

我如何捕获错误并确定显示错误页面的原因

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            if (rbtnSearchBy1.Checked)
            {
                Server.Transfer("ViewEmpHistory.aspx");
            }
            if (rbtnSearchBy2.Checked)
            {
                Server.Transfer("SearchEmp.aspx");
            }
            if (rbtnSearchBy3.Checked)
            {
                Server.Transfer("ViewEmpCard.aspx");
            }
        }

        catch (ThreadAbortException)
        {
            throw;
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }

【问题讨论】:

  • 如果没有选中复选框,您期望的行为是什么?对于这种情况,您的逻辑不会调用 Transfer。
  • 我希望它不会出现“Internet Explorer 无法显示网页”错误......
  • 但是您发送请求,然后响应为您提供没有响应。也许你应该考虑添加类似 else { Server.Transfer("StandardErrorPage.aspx") }
  • 在 Internet Explorer 错误页面点击“显示详细信息”时,错误代码是什么? http 500?其他?
  • 基于代码。我会假设 OP 会收到一个空白的 200 响应。因此 IE 将给出其标准错误页面,因为没有要呈现的内容

标签: c# asp.net visual-studio-2010


【解决方案1】:

无论您的“btnSubmit_Click”在哪个 .cs 页面上,都在 that page_load 事件上放置一个断点。
此外,在“ViewEmpHistory.aspx”、“SearchEmp.aspx”和“ViewEmpCard.aspx”的 page_load 事件上放置一个断点。 (所以现在你有四个断点)。

再次单步执行项目并确保所有参数值都正确传递,同时确保If (!PostbacK) 条件等具有正确的逻辑(如果适用)。

HTH

【讨论】:

    【解决方案2】:

    如果你不选择一个单选按钮,你不输入你的 catch 是正常的,因为你的应用程序没有抛出异常。 但你可以查看你的事件日志

    在您的 cmd 中输入:eventvwr 以访问您的事件日志

    【讨论】:

    • 事件查看器没有相关信息(查看时间戳时)
    【解决方案3】:

    为了调试这类问题,我经常发现使用 Tracing 更容易。

    您可以在application levelpage level 上打开跟踪。

    您的方法调用将变为:

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            if (rbtnSearchBy1.Checked)
            {
                Server.Transfer("ViewEmpHistory.aspx");
            }
            if (rbtnSearchBy2.Checked)
            {
                Server.Transfer("SearchEmp.aspx");
            }
            if (rbtnSearchBy3.Checked)
            {
                Server.Transfer("ViewEmpCard.aspx");
            }
        }
        catch(Exception ex)
        {
            Trace.Warn("Exception Caught", "Exception: btnSubmit_Click", ex);
        }
    }
    

    您可以查看跟踪日志,然后导航到Trace Viewer

    【讨论】:

      【解决方案4】:

      您所做的工作结构并不完全正确。如果这些块是独占的,那就更清楚了——这就是我在下面的代码中添加 else 语句的原因。我还指出了您希望处理在 cmets 中未选中任何按钮的状态的位置。

      但是你是对的,没有抛出任何异常。您的代码没有抛出异常,当您结束处理请求而不返回任何类型的响应时,它不会导致异常。

              if (rbtnSearchBy1.Checked)
              {
                  Server.Transfer("ViewEmpHistory.aspx");
              }
              else if (rbtnSearchBy2.Checked)
              {
                  Server.Transfer("SearchEmp.aspx");
              }
              else if (rbtnSearchBy3.Checked)
              {
                  Server.Transfer("ViewEmpCard.aspx");
              }
              else
              {
                // Here's where the logic will flow to if no radio button is clicked.
                // We could 
                // * Server.Transfer to a default location
                // * Throw an exception
                // * Do nothing, which returns no response, and causes
                //   IE to complain that it could not display the webpage.
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-11
        • 2012-08-20
        相关资源
        最近更新 更多