首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.NET 伪静态 Url重写真正的,百度了N遍无果

2013-08-16 
ASP.NET 伪静态 Url重写真正的高手请进,百度了N遍无果用个实例:ASP.NET项目里页面上的跳转地址是.aspx后缀

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配置伪静态可否实现,没怎么研究)?最好不要修改原来的代码。
大家都一起来学习学习····· ASP.NET URL重写 伪静态 URLRewriter.dll 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。然后你程序里面都不用改的。你试一下就知道了.
[解决办法]

引用:
引用:IIS里有个很好用的扩展,是微软自己出的你说好用不好用?url rewriter,你这个要求,简单到添加一个规则就行了
规则是把.html重定向到.aspx,页面上的超链接是.aspx的方式,点击了超链接后地址栏就成了.aspx的方式了,我想要地址栏呈.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 })



在服务器端按路由规则生成你所谓的貌似静态的url地址
[解决办法]
同意。

第一,不要去自欺欺人地去搞什么“伪htm后缀”。你可以搞成 .fox    .ccav    .me    .fck.cjk    之类的后缀的形式都可以,甚至没有后缀的形式也可以,为什么要做个“伪娘”去混淆人家 .htm     .html 后缀呢?

而技术上,这个部分不要拿6、7年前的入门书上那些东西学了。现在asp.net4以上版本已经支持路由。参见
http://msdn.microsoft.com/zh-cn/library/dd329551(v=vs.100).aspx
如果折腾这类东西,我们先要问那些瞎耽误工夫的人:你知道asp.net自身就支持路由功能吗?
[解决办法]
你要先搞清楚Response.Redirect(url)是告诉浏览器你直接去访问URL地址,那么你这个URL给的是什么浏览器就会去访问什么。所以说原则上来说你必须要把所有的跳转都改一遍。
不过办法都是人想出来的,可以做一个扩展方法,

    public static void UrlRedirect(this HttpResponse response, string url)
    {
        //这个地方处理一下把aspx换成html地址,规则什么的自己想办法搞定
        response.Redirect(url);
    }
然后页面上的Response.Redirect替换成Response.UrlRedirect

热点排行