2009-02-25 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Thu, 26 Feb 2009 02:32:28 +0000 (02:32 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Thu, 26 Feb 2009 02:32:28 +0000 (02:32 -0000)
* HttpApplication.cs: let the current context known that
MapRequestHandler is done.

* HttpContext.cs: implemented RemapHandler

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

mcs/class/System.Web/System.Web/ChangeLog
mcs/class/System.Web/System.Web/HttpApplication.cs
mcs/class/System.Web/System.Web/HttpContext.cs

index dfa6dd62cbacddb2e338ea226a352e711a583431..ed81d24d9ad0770408076f781b0cedaf347e7e25 100644 (file)
@@ -1,3 +1,10 @@
+2009-02-25  Marek Habersack  <mhabersack@novell.com>
+
+       * HttpApplication.cs: let the current context known that
+       MapRequestHandler is done.
+
+       * HttpContext.cs: implemented RemapHandler
+
 2009-02-24  Marek Habersack  <mhabersack@novell.com>
 
        * TempFileStream.cs: the class is internal
index 4348d91324283ee0736e70a7b1a54bae6b5cbfd6..9ba35e79d37fe0180a2e9e738a924ce6b6c72cc7 100644 (file)
@@ -1177,6 +1177,9 @@ namespace System.Web {
                        if (stop_processing)
                                yield return true;
 
+#if NET_2_0
+                       context.MapRequestHandlerDone = false;
+#endif
                        StartTimer ("BeginRequest");
                        eventHandler = Events [BeginRequestEvent];
                        if (eventHandler != null) {
@@ -1243,6 +1246,7 @@ namespace System.Web {
                                foreach (bool stop in RunHooks (eventHandler))
                                        yield return stop;
                        StopTimer ();
+                       context.MapRequestHandlerDone = true;
 #endif
                        
                        StartTimer ("GetHandler");
index d8b2755ba4aeab1c4a61cc278f4d798742d12a0a..aa70b1b221e371b5ddda727a45e9898475ba6709 100644 (file)
@@ -311,6 +311,11 @@ namespace System.Web {
                }
 
 #if NET_2_0
+               internal bool MapRequestHandlerDone {
+                       get;
+                       set;
+               }
+               
                // The two properties below are defined only when the IIS7 integrated mode is used.
                // They are useless under Mono
                public RequestNotification CurrentNotification {
@@ -617,6 +622,15 @@ namespace System.Web {
                        return null;
                }
 
+#if NET_2_0
+               public void RemapHandler (IHttpHandler handler)
+               {
+                       if (MapRequestHandlerDone)
+                               throw new InvalidOperationException ("The RemapHandler method was called after the MapRequestHandler event occurred.");
+                       Handler = handler;
+               }
+#endif
+               
                public void RewritePath (string path)
                {
 #if NET_2_0