1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
namespace System.Web {
using System;
using System.Web;
using System.Web.Util;
using System.Web.Configuration;
//
// Module that implements the UrlMappings functionality
// on IIS 7 in integrated mode, this takes the place of
// the UrlMappings execution step and is listed in <modules/>
sealed internal class UrlMappingsModule : IHttpModule {
internal UrlMappingsModule() {}
public void Init(HttpApplication application) {
bool urlMappingsEnabled = false;
UrlMappingsSection urlMappings = RuntimeConfig.GetConfig().UrlMappings;
urlMappingsEnabled = urlMappings.IsEnabled && ( urlMappings.UrlMappings.Count > 0 );
if (urlMappingsEnabled) {
application.BeginRequest += new EventHandler(OnEnter);
}
}
public void Dispose() {}
internal void OnEnter(Object source, EventArgs eventArgs) {
HttpApplication app = (HttpApplication) source;
UrlMappingRewritePath(app.Context);
}
internal static void UrlMappingRewritePath(HttpContext context) {
HttpRequest request = context.Request;
UrlMappingsSection urlMappings = RuntimeConfig.GetAppConfig().UrlMappings;
string path = request.Path;
string mappedUrl = null;
// First check path with query string (for legacy reasons)
string qs = request.QueryStringText;
if (!String.IsNullOrEmpty(qs)) {
mappedUrl = urlMappings.HttpResolveMapping(path + "?" + qs);
}
// Check Path if not found
if (mappedUrl == null)
mappedUrl = urlMappings.HttpResolveMapping(path);
if (!String.IsNullOrEmpty(mappedUrl))
context.RewritePath(mappedUrl, false);
}
}
}
|