ASP.NET 伪静态 Url重写真正的高手请进,百度了N遍无果
用个实例:ASP.NET项目里页面上的跳转地址是.aspx后缀的。想使用伪静态技术实现静态显示,即显示的后缀是.html。
我在IE输入 如~/aaa_1.html 访问到了~/aaa.aspx?ID=1 这个动态页面;IE地址栏显示的还是~/aaa_1.html(处理回发);
但我的~/aaa.aspx 里面有个button按钮,用于跳转到~/bbb.aspx这个页面,后台的代码是Response.Redirect("bbb.aspx");
我点击这个按钮时可以跳转过去,但IE地址栏里显示的地址是~/bbb.aspx;
(问题就在这里)我想跳转到~/bbb.aspx这个页面上时IE的地址栏显示~/bbb.html 这个地址。请问有什么方法可以解决吗?我查找了很多关于伪静态和Url地址重写的例子,都没有说到这一点。
有一种解决办法是吧所有的Response.Redirect都写成.html后缀,但我的项目有N多这样的跳转,改起来相当麻烦。有其他简单的方式吗(不知道IIS配置伪静态可否实现,没怎么研究)?最好不要修改原来的代码。
大家都一起来学习学习·····
------解决方案--------------------http://www.iis.net/downloads/microsoft/url-rewrite
http://www.iis.net/downloads/microsoft/url-rewrite
------解决方案--------------------urlrewriter.
IIS设置。ISAPI筛选器,添加IsapiRewrite4.dll。在IsapiRewrite4.dll目录中创建一个ini文件。里面写规则。如:RewriteRule ^/index.html /default.aspx
这样,访问index.html时,就相当于访问default.aspx.
具体的,去百度。
------解决方案--------------------更正
你可以去试试这个扩展,如果你的IIS和操作系统支持的话。
安装完了以后在IIS里进到这个设置项里,添加一个规则 *.html->*.aspx,然后使用rewrite模式,这样url是被重写的,就是你输入地址index.html,请求会转到index.aspx,浏览器上面也会显示为index.html。然后你程序里面都不用改的。你试一下就知道了.
------解决方案--------------------
你说的这种情况我明白,你可以写一个公共的request handler,在global.asax里面的事件里,对所有的请求都转发到.html去。当然最好的办法是在iis rewriter里面多加一个规则来处理这个问题,网上搜索一下方法吧。iis rewriter很强大,应该可以建立只重写url而不转发的规则
------解决方案--------------------参考:http://blog.csdn.net/joyhen/article/details/8476797,必要的iis设置也是需要的,这个需要参考:http://blog.csdn.net/joyhen/article/details/8776578
楼主自己敲一遍会更深刻,亲手实践相信我吧
------解决方案--------------------额,请放弃远古级别的东西,直接使用路由表,webfrom一样可以用路由,而使用路由后你可以使用Response.RedirectToRoute("View Product", new { ProductName = ProductName })