forked from microsoft/referencesource
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUrlMappingsModule.cs
55 lines (42 loc) · 1.85 KB
/
UrlMappingsModule.cs
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
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);
}
}
}