asp.net不用设置iis实现url重写 类似伪静态路由


程序要调整的部分只有两块。
一是web.config文件。
二是链接地址。
所需urlrewrite.dll

首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

下载安装后再bin目录下找到URLRewriter.dll文件

好了开始实施。
第一步:将urlrewrite.dll下载到你的web程序目录里去。哪都行。我是放在bin里面的。然后添加引用,将urlrewrite.dll引用进来。
第二步:修改web.config
这一步要修改几个地方。要注意位置是不同的

1 在web.config文件中加入如下代码,注意要放在<configuration>下面, <appSettings/>

复制代码 代码如下:

<connectionStrings/> <system.web>上面不然会出错

   <configSections>
    <section name="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>


其中
复制代码 代码如下:

<section name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中

2 在web.config文件中的system.web节点下加入如下代码

复制代码 代码如下:

    <httpHandlers>
      <add verb="*" path="*.html"
            type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*"
            type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
   </httpHandlers>

这段代码的意思是:将文件扩展名为.html和任意扩展名(包括无扩展名,不包括*.html,因为这个位置在上面会先处理)的文件的所有 HTTP 请求映射到类 URLRewriter.RewriterFactoryHandler,注意顺序,按从上到下执行,如果path="*"在上面的话,则下面的html映射则无效,下面步骤中有映射到那个页面的设置

3 重写url

和1一样 ,同样是放在<configuration>节点下面

关键就是

复制代码 代码如下:

<RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/(.+).html</LookFor>
        <SendTo>~/Shownews.aspx?ShowID=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/(.+)</LookFor>
        <SendTo>~/blog.aspx?UserName=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>
 

效果:当访问http://127.0.0.1/123.html时,实际访问的是http://127.0.0.1/Shownews.aspx?ShowID=123

 访问http://127.0.0.1/任意字符时,实际访问的是http://127.0.0.1/blog.aspx?UserName=任意字符

 注意第2,3步中的映射顺序

其中关键在url的转换

复制代码 代码如下:

<LookFor>~/(.+).html</LookFor>

<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>


意思是把第一个路径转成另一个路径。其中<LookFor>()中的正则表达式就是第二句中的参数$1 .

同样也可以用$2 $3来表示<LookFor>中第二 第三个()中的参数。

多个参数:

复制代码 代码如下:

<ReWriterUrls>
          <rule>
               <old>(.*)/TestUrlRe/file(.*)/(.*)\.html</old>
               <new>../WebForm1.aspx?id=$2&type=$3</new>
          </rule>
          <rule>
               <old>(.*)/TestUrlRe/t(.*)/(.*)\.html</old>
               <new>../WebForm1.aspx?tid=$2&ttype=$3</new>
          </rule>
</ReWriterUrls>

第三步:在页面程序中可以这样写:

复制代码 代码如下:

<a href="news_<%=newsid%>.html" target="_blank">新闻标题</a>

完成上面三个步骤就可以轻松实现URL重写了,不过需要注意的是:如果发布网站的话,你会发现你的URL重写有可能会失效,如果失效的话就需要您设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。
上面设置完毕之后,就可以正常浏览了。



相关阅读:
Win7设置电源模式为高性能计划方法
Java4Android开发教程(四)java的变量
PHP+Javascript实现在线拍照功能实例
div图片marquee无缝连接实现代码
jQuery获取父元素及父节点的方法小结
微信随机生成红包金额算法java版
Linux中进程管理工具htop的安装与其命令使用教程
Java利用Sping框架编写RPC远程过程调用服务的教程
JavaScript使用二分查找算法在数组中查找数据的方法
Javascript的表单验证-揭开正则表达式的面纱
全面解析Objective-C中的block代码块的使用
基于Bootstrap重置输入框内容按钮插件
Javascript 多浏览器兼容总结(实战经验)
javascript框架设计之类工厂
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 环保局局长就职上任演讲稿 关于大跨度工业厂房消防安全管理工作的思考 《乌塔》读后感(3) 下半生,你是我的牵挂作文900字 土地租赁合同协议书 小学二年级语文上册教学计划 2016关于感恩节的由来 童话故事——小鸟的比赛 千面人生 小学作文老师您辛苦了 往事作文550字 工作自我评价范文 高三语文下学期工作计划 特殊情况作文300字 饿狐狸 小时候,你不要丢下我 一棵树,平静的伫立着。 说我是骗子作文550字 高一军训心得体会作文 给姚老师的一封信作文450字 如何写好求职信和推荐信 《环保从我做起》主题班会设计 读了能让人哭的句子 闭上眼,看不见自己,你却清楚可见 《现代教师读本》(人文卷)读后感 辰山植物园一日游作文700字 南京暴行 读后感 党政综合办个人工作总结 拔牙作文450字 你就那么霸道的占据了我的脑海我的心 在北京初秋的夜里 小鸟的悲惨命运作文400字 西游记读后感5000 两个人的故乡 咱们班的一件事 后勤工作汇报材料 月夜·泪流作文150字 最新入党申请书总结 小猴子知错就改 南乡子(赋十四弦) 你做好升职的准备了吗 延续 市财政局长个人廉政情况汇报 暮春归故山草堂阅读答案 冬季运动会加油稿 初中初二作文350字:浙江的横店 失去自由的动物作文350字 想念麦香 初中初一作文750字:土鸭 父亲节赞美父亲的句子 我爱文昌阁_关于描写旅游景点的小学生作文550字

Copyright © 2016 phpStudy |