web.config 加入如下节:
<httpModules>
<add name="UrlReWriteModule" type="UrlReWrite.UrlReWriteModule, UrlReWriteModule"/>
</httpModules>
UrlReWriteModule.cs如下:using System;
using System.Data;
using System.Configuration;
using System.Web;
namespace UrlReWrite
{ /// <summary>
/// UrlReWriteModule 的摘要说明
/// </summary>
public class UrlReWriteModule : System.Web.IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
} private void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
//HttpContext context = ((HttpApplication)sender).Context;
// 获取旧的Url
string url = context.Request.Path.ToLower();
// 重写Url
context.RewritePath("111.html");
} public void Dispose()
{
}
}
}
配置如下: 在iis6.0中建立一个站点:站点IP:192.168.1.55 目录指向:website1目录,在website1下建立一个index。html文件,内容就是输出1111,在iis中主目录->点击配置->出现的界面点击“添加”->在出现的添加界面添加 扩展名为 .html 文件过滤 可执行文件指向:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 动作是全部。
可是当我访问index.html时候应该会转向 111.html 可是会发生死循环,难道。net2.0不能用这样的重新转向了。
UrlReWriteModule.cs文件如果是在 。net1.1下 同样的操作同样的配置,访问index.html可以转向111.html,为什么在。net2.0下不可以。希望做过的高手指点一下。
<httpModules>
<add name="UrlReWriteModule" type="UrlReWrite.UrlReWriteModule, UrlReWriteModule"/>
</httpModules>
UrlReWriteModule.cs如下:using System;
using System.Data;
using System.Configuration;
using System.Web;
namespace UrlReWrite
{ /// <summary>
/// UrlReWriteModule 的摘要说明
/// </summary>
public class UrlReWriteModule : System.Web.IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
} private void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
//HttpContext context = ((HttpApplication)sender).Context;
// 获取旧的Url
string url = context.Request.Path.ToLower();
// 重写Url
context.RewritePath("111.html");
} public void Dispose()
{
}
}
}
配置如下: 在iis6.0中建立一个站点:站点IP:192.168.1.55 目录指向:website1目录,在website1下建立一个index。html文件,内容就是输出1111,在iis中主目录->点击配置->出现的界面点击“添加”->在出现的添加界面添加 扩展名为 .html 文件过滤 可执行文件指向:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 动作是全部。
可是当我访问index.html时候应该会转向 111.html 可是会发生死循环,难道。net2.0不能用这样的重新转向了。
UrlReWriteModule.cs文件如果是在 。net1.1下 同样的操作同样的配置,访问index.html可以转向111.html,为什么在。net2.0下不可以。希望做过的高手指点一下。
// 重写Url
context.RewritePath("111.html");这里不需要判断么,如果是111则不执行RewritePath
怎么还不明白string url = context.Request.Path.ToLower();
if(url 不等于 111.html)
{
context.RewritePath("111.html");
}
HttpContext context = application.Context;
// 获取旧的Url
string url = context.Request.Path.ToLower();
// 重写Url
context.RewritePath("111.htm");
比如我重新定向到111.htm 不是111.html 因为我iis中扩展名没有加.htm监控,程序正常运行,也就是说如果我处理了一个.html类型的文件就不能再转到一个.html的连接地址,这让我很郁闷,为什么 2003下可以 2005下不行 同样的配置。不知道我这样说你懂了没有。
这个我懂我不明白为什么2003下如果重新定向.html没有问题,2005下就不行了呢!
而重定向以前的url则没有这个字符串也就是说,你在WEB下加个文件夹,命为rewrite,html文件都放在里
if(url.indexof("rewrite")>0)
{return;//不要再去重写了}这也是个临时办法..呵呵,至于为什么,我明天再查查
还是非常谢谢你的兄弟。
------------------
这是以前用isp筛选器时用的我今天测了一下,在Global.asax中是不需要的,Global.asax是继承httpModule的,所以
httpModules应该也不用添加对html的解释
接口的这个我是试验了的也就是没有办法执行转向了,比如首页是 111.html 不过不添加过滤,他就返回111.html的内容,根本达不到转向的效果了,这个破问题困惑了好几天了,真是郁闷。
接口中的代码 我直接转向 222.aspx页面 就没有问题不会出现循环调用。html就不行。
我把demo发给你