2006-09-08 Robert Jordan <robertj@gmx.net>
authorRobert Jordan <robertj@gmx.net>
Fri, 8 Sep 2006 21:09:37 +0000 (21:09 -0000)
committerRobert Jordan <robertj@gmx.net>
Fri, 8 Sep 2006 21:09:37 +0000 (21:09 -0000)
* Page.cs: assure that RenderTrace is called even if an
exception occurred. Fixes bug #78930.

svn path=/trunk/mcs/; revision=65135

mcs/class/System.Web/System.Web.UI/ChangeLog
mcs/class/System.Web/System.Web.UI/Page.cs

index 9f7a9f0873cc774f9b73cde8005941be8fb8226f..7ca4387aa9f64cd1237020d699ba739b355a1845 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-08  Robert Jordan  <robertj@gmx.net>
+
+       * Page.cs: assure that RenderTrace is called even if an
+       exception occurred. Fixes bug #78930.
+
 2006-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * TemplateControl.cs: search for the new Page_* event handlers in 2.0.
index 7585eea3ef2735e1828d564aced08b9cdea042f5..0da06c0b770c2eedc8224930923bde7a07fbfb1d 100644 (file)
@@ -1068,9 +1068,11 @@ public class Page : TemplateControl, IHttpHandler
                        context.ClearError (e);
                        // We want to remove that error, as we're rethrowing to stop
                        // further processing.
+                       Trace.Warn ("Unhandled Exception", e.ToString (), e);
                        throw;
                } finally {
                        try {
+                               RenderTrace ();
                                UnloadRecursive (true);
                        } catch {}
                        if (Thread.CurrentThread.CurrentCulture.Equals (culture) == false)
@@ -1177,11 +1179,9 @@ public class Page : TemplateControl, IHttpHandler
                HtmlTextWriter output = new HtmlTextWriter (_context.Response.Output);
                RenderControl (output);
                Trace.Write ("aspx.page", "End Render");
-               
-               RenderTrace (output);
        }
 
-       private void RenderTrace (HtmlTextWriter output)
+       private void RenderTrace ()
        {
                TraceManager traceManager = HttpRuntime.TraceManager;
 
@@ -1193,8 +1193,10 @@ public class Page : TemplateControl, IHttpHandler
                if (!Trace.HaveTrace && traceManager.Enabled && !traceManager.PageOutput) 
                        return;
 
-               if (!traceManager.LocalOnly || Context.Request.IsLocal)
+               if (!traceManager.LocalOnly || Context.Request.IsLocal) {
+                       HtmlTextWriter output = new HtmlTextWriter (_context.Response.Output);
                        Trace.Render (output);
+               }
        }
        
        void RaisePostBackEvents ()