首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 将.aspx扩展名重写显示为.html [已结贴,结贴人:ws52097289]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:40:36 楼主
    要求就是把所有aspx后缀都重写显示为html
    网上介绍这个的文章不少,UrlRewriter.dll、Intelligencia.UrlRewriter.dll我按照介绍的方法做了,没效果的,
    在线等,
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:42:221楼 得分:0
    UrlRewriter 可以

    直接把UrlRewriter项目加到你的项目里 '

    方便调试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:46:022楼 得分:0
    真不行,用第三方组件也可以 如Helicon 下载地址

    http://www.helicontech.com/download/


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:55:543楼 得分:0
    HttpModule来实现,然后配置web.config中的 <httpModules>和IIS中的应用程序映射就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 11:07:394楼 得分:0
    引用 3 楼 showbo 的回复:
    HttpModule来实现,然后配置web.config中的 <httpModules> 和IIS中的应用程序映射就可以了



    <httpHandlers>
          <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
          <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
        </httpHandlers>
    然后在iis添加一个html的应用程序扩展对吧

    是这样的吗?

    页面无法显示,麻烦说详细点,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 11:59:025楼 得分:0
    不复杂的  主要是映射 匹配
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 11:59:336楼 得分:15
    如不明白 加QQ279242406
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 15:03:567楼 得分:5
    给个简单的例子给你看吧,framework是2.0

    1.url重写代码.将下面代码编译为MyHttpModule.dll,然后放入bin目录中,如果没有可以在网站跟目录下建立一个.注意名称不要变,配置web.config时需要用的.
    C# code
    using System.Web; using System.Text.RegularExpressions; namespace MyHttpModule { public class MyModule : IHttpModule { private HttpApplication httpApp = null; //下面3个方法是继承IHttpModule接口后必须实现的 public void Init(HttpApplication httpApp) { this.httpApp = httpApp; this.httpApp.BeginRequest += new System.EventHandler(httpApp_BeginRequest); } private void httpApp_BeginRequest(object sender, System.EventArgs e) { string UrlStr = httpApp.Context.Request.Url.ToString(); //下面就看你需要怎么重写了,主要是看正则表达式的使用了.... string FileName = Regex.Match(UrlStr, @"/([^\/]+)\.html?", RegexOptions.IgnoreCase).Groups[1].Value; if (FileName != "")//如果使用正则表达式取到文件,则转向这个aspx文件,但是注意如果不存在FileName+".aspx"组合的aspx页面时会出现404错误 httpApp.Context.RewritePath(FileName + ".aspx"); else httpApp.Context.RewritePath("err.aspx");//否则转向一个错误页面指示这个aspx文件不存在 } public void Dispose() { } } }


    2.在web.config中的 <system.web>节点下添加 <httpModules>接点,文件大致如下
    XML code
    <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <httpModules> <!-- name是程序集名称,就是你的dll的名称 type的内容是"命名空间.映射类名称,映射类名称",这句可以不要 --> <add name="MyModule" type="MyHttpModule.MyModule,MyModule"/> </httpModules> <authentication mode="Windows" /> </system.web> </configuration>


    3.IIS的配置.这个是在2003系统,iis6下配置的.
    找到你的虚拟目录,右键选择属性,然后在目录中点配置,在弹出窗口中点插入,然后在可执行文件中浏览选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,注意你的framework版本号,把确认文件是否存在这个钩去掉,这个非常重要,切记...

    4.在你的跟目录下建立一个index.aspx和err.aspx,内容如下
    index.aspx
    HTML code
    <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> 其实我是aspx页面,不是html页面,哈哈~~ </body> </html>


    err.aspx
    HTML code
    <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> 页面不存在! </html>



    完成上面4部以后就基本ok了,你可以试试效果了

    拿我机子来说
    1)访问http://192.168.1.68/HttpHandler/index.htm时,其实访问的是http://192.168.1.68/HttpHandler/index.aspx

    2)访问http://192.168.1.68/HttpHandler/index.aahtm[/b]时,由于正则不匹配,所以访问了http://192.168.1.68/HttpHandler/err.aspx

    3)访问http://192.168.1.68/HttpHandler/test.htm时,其实访问的是http://192.168.1.68/HttpHandler/test.aspx,但是不存在test.aspx这个文件,所以会提示404错误


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 15:11:238楼 得分:0
    web.config

    XML code
    <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <httpModules> <!-- name是程序集名称,就是你的dll的名称 type的内容是"命名空间.映射类名称,映射类名称",========这句可以不要======= 更正下上面的话,不是type不需要,而是这些注释不需要,怕你理解错了....type是要有的 --> <add name="MyModule" type="MyHttpModule.MyModule,MyModule"/> </httpModules> <authentication mode="Windows" /> </system.web> </configuration>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 15:12:579楼 得分:0
    该回复于2008-03-12 15:32:35被管理员删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 15:15:1910楼 得分:0
    该回复于2008-03-12 15:32:35被管理员删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 15:32:2611楼 得分:0
    学习~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 16:26:5812楼 得分:0
    showbo 不好意思哦,  wangzehong5200 先给我解答的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved