2012-07-03 119 views
1

我有一个导致“Internet Explorer无法显示网页”错误的代码块。当我单击提交按钮时,如果选中无单选按钮,网页状态栏将显示“等待主机响应”,然后显示“Internet Explorer无法显示网页”。当我浏览visual studio中的代码时,代码执行得很好,并且没有任何catch块被执行。在asp.net中出现错误“Internet Explorer无法显示网页”

enter image description here

我怎样才能捕获错误,并找出原因正在显示错误页面?

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()); 
     } 
    } 
+1

没有选中复选框,您对行为有什么期待?您的逻辑不会针对该情况调用Transfer。 – Sean

+0

我期待它不会去“”Internet Explorer无法显示网页“错误.... – DotNetRookie

+0

但你发送的请求,然后响应服务你没有反应。也许你应该考虑添加类似的东西{服务器.Transfer(“StandardErrorPage.aspx”)} – Sean

回答

1

无论.cs页面中您的“btnSubmit_Click”处于打开状态,请在处指出一个断点即 page_load事件。
此外,在“ViewEmpHistory.aspx”,“SearchEmp.aspx”&“ViewEmpCard.aspx”的page_load事件上放置一个断点。 (所以现在你有四个断点)。

通过该项目再次步骤,并确保正在传递的所有参数值正确,还要确保你有正确的逻辑(如适用)If (!PostbacK)条件等

HTH

1

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

输入您的CMD:EVENTVWR访问您的事件日志

enter image description here

+0

事件查看器没有相关信息(查看时间戳时) – DotNetRookie

+0

在global.asax中添加beakpoint - Application_Start –

1

调试这些类型的问题,我经常发现它更容易使用跟踪。

您可以打开追踪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

0

你已经什么完成的结构不完整。如果块是独占的,它会更干净 - 这就是为什么我将else语句添加到下面的代码中。我还指出了你想要处理的地方,在评论中没有选中按钮。

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

 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. 
     } 
相关问题