UrlReWrite我在VS调试和一直在IIS里浏览效果不一样(在线等)
环境:XP,VS2005,IIS5.1
用的是一下载的DLL
我直接在VS里调试URL
http://localhost:1376/default.aspx
default.aspx页里有个 <a> URL是http://localhost:1376/aaa/
这样可以正确重定向到aaa.htm
但是在IIS里直接浏览URL=
http://localhost/default.aspx
但是浏览http://localhost/aaa/
会出错“无法找到页”这是为什么啊,有高手知道不?
------解决方案--------------------up孟子
------解决方案--------------------孟子来了
我也不说
只接分
------解决方案--------------------来看孟子,接分!!!
------解决方案--------------------up~~
------解决方案--------------------在iis里面添加文件扩展句映射时把“确认文件是否存在”选项反选掉就可以了
------解决方案--------------------试试这样做看看:
在IIS下为你的网站新建一个目录,然后写个HttpModule将 "http://127.0.0.1/mysite/aaa/ "这们的请求转发到http://127.0.0.1/aaa.htm
------解决方案--------------------下载的DLL不需要配置就能直接使用吗?不会吧,转向规则应该是你自己来决定的吧,如果是.net 2.0,本身就有这个功能,不需要什么下载dll。
2005里可以直接写
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//判断url
string url = HttpContext.Current.Request.RawUrl;
//是否是/aaa/
//转到新的url
HttpContext.Current.RewritePath( "xxx ");
}
另外,htm格式的需要在iis里提交映射,因为htm格式的文件iis会直接发送到客户端,不经过asp.net处理。
在iis设置htm与aspx使用相同的dll即可
------解决方案--------------------看到1376这个端口,我想你没在iis上建立虚拟目录吧,是时间在vs里调试的吧,如果真是这样,那肯定是不行的,建议你在iis里建立好目录再做调试
------解决方案--------------------经本人证实在可以的
HttpContext.Current.RewritePath( "~/404.htm ");
你有这个页吗,如果是在项目的其实目录下就用 '目录名/404.htm ',项目根目录直接 "404.htm "就好
下面是我测试通过的代码:你看看吧
/*这个是个Module模块*/
public class ModuleRewriter : IHttpModule {
public void Dispose() { }
public void Init(HttpApplication context) {
//警告!如果您使用Windows身份验证,请在BeginRequest 或 Authencation事件中执行验证.
//
context.AuthorizeRequest += new EventHandler(Application_AuthorizeRequest);
}
private void Application_AuthorizeRequest(object sender, EventArgs e) {
HttpApplication app = (HttpApplication)sender;
string url = HttpContext.Current.Request.Url.ToString();
if(url.Contains( "/aaa/ ")) {
HttpContext.Current.Response.StatusCode = 505;
}
//UrlReWriteProvider reWriteProvider = new UrlReWriteProvider();
//reWriteProvider.ReWriteUrl( "default2.aspx ", app.Context);
//string a = app.Context.Request.RawUrl;
//string[] url = app.Context.Request.RawUrl.Split( '/ ');
//string tagetPage = url[url.Length-1];
//if (tagetPage.Contains( ".aspx ")) {
// tagetPage = tagetPage = tagetPage.Replace( ".aspx ", ".do ");
// //app.Context.Server.Transfer(tagetPage);
//}
//else {
// tagetPage = tagetPage.Replace( ".do ", ".aspx ");
// reWriteProvider.ReWriteUrl(tagetPage, app.Context);
//}
//tagetPage = tagetPage.Replace( ".do ", ".aspx ");
//reWriteProvider.ReWriteUrl(tagetPage, app.Context);
}