我有一个在Classic ASP.NET中开发并在IIS 7.5上运行的网站。它工作正常。但现在我的任务是将联盟计划添加到我的网站。我希望我的reflink看起来像www.mywebsite.com/r/userid
。好吧,我用Google搜索,发现我可以:
使用UrlRewrite第三方HttpModule
。据我了解,它们基于runAllManagedModulesForAllRequests="true"
web.config设置。从理论上讲,我可以:
设置runAllManagedModulesForAllRequests="true"
并在RewritePath
中手动执行Application_BeginRequest
。但是我的Application_BeginRequest
已经包含了一些代码。将所有页面,图像等发送到Application_BeginRequest
是太沉重了,因为很少有人称之为URL。
所以,问题是如何只重写以www.mywebsite.com/r/
开头的子路径,而不是为每个图像,css等调用Application_BeginRequest
?如果没有第三方的话,那就最好。
答案 0 :(得分:0)
好了,完成了HttpModule。
的web.config:
<system.webServer>
<modules>
<add name="ReflinkModule" preCondition="" type="www.ReflinkModule" />
</modules>
</system.webServer>
ReflinkModule.cs:
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(BeginRequest);
}
public void BeginRequest(Object source, EventArgs e)
{
if (HttpContext.Current == null)
return;
if (HttpContext.Current.Request == null)
return;
if (HttpContext.Current.Request.RawUrl == null)
return;
string start = "/r/";
if (!HttpContext.Current.Request.RawUrl.StartsWith(start))
return;
string key = HttpContext.Current.Request.RawUrl.Substring(start.Length);
HttpContext.Current.RewritePath("~/Xxxxx.aspx?r=" + key);
}