日期:2014-05-18  浏览次数:20473 次

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);
}