[Mono-dev] Patch for StopRoutingHandler - stop handling routes instead of throwing
Damir Simunic
damir.simunic at wa-research.ch
Fri Jan 14 09:43:08 EST 2011
Hi all,
noticed that adding routes using StopRoutingHandler() throws NotSupportedExceptions instead of simply ceasing further processing in the UrlRoutingModule.
Attached is the patch I wrote to change that behavior on master branch, accompanied with a unit test.
Best,
Damir
From 6917f50523363e4b517d00490cf2e7ffc5d9ccbf Mon Sep 17 00:00:00 2001
From: Damir Simunic <damir.simunic at wa-research.ch>
Date: Fri, 14 Jan 2011 15:32:13 +0100
Subject: [PATCH] Ignore routes with StopRoutingHandler instead of throwing
---
.../System.Web.Routing/UrlRoutingModule.cs | 3 +++
.../System.Web.Routing/UrlRoutingModuleTest.cs | 11 +++++++++++
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs b/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
index cf8465e..c1a5b2d 100644
--- a/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
+++ b/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
@@ -119,6 +119,9 @@ namespace System.Web.Routing
if (rd.RouteHandler == null)
throw new InvalidOperationException ("No IRouteHandler is assigned to the selected route");
+ if (rd.RouteHandler is StopRoutingHandler)
+ return; //stop further processing
+
var rc = new RequestContext (context, rd);
IHttpHandler http = rd.RouteHandler.GetHttpHandler (rc);
diff --git a/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs b/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
index 7357f1a..a55d911 100644
--- a/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
+++ b/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
@@ -155,6 +155,17 @@ namespace MonoTests.System.Web.Routing
#endif
// it internally stores the handler
}
+
+ [Test]
+ public void PostResolveRequestCacheStopRoutingHttpHandler ()
+ {
+ var m = new UrlRoutingModule ();
+ RouteTable.Routes.Add (new MyRoute ("foo/bar", new StopRoutingHandler ()));
+ var hc = new HttpContextStub3 ("~/foo/bar", String.Empty, "apppath", false);
+ m.PostResolveRequestCache (hc);
+ Assert.IsNull (hc.RewrittenPath, "StopRoutingHandler should stop before the path is rewritten");
+ }
+
[Test]
[Ignore ("looks like RouteExistingFiles ( = false) does not affect... so this test needs more investigation")]
--
1.7.3.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: StopRouteHandler.patch
Type: application/octet-stream
Size: 2181 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20110114/d61222ca/attachment-0001.obj
More information about the Mono-devel-list
mailing list