好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

UrlReWriter.net学习笔记

UrlReWriter.net学习笔记

搞了一天的Url重写,只是明白怎么使用了,但是运行原理不懂。因为很辛苦的弄了一整天,所以写下来,以备查看。

UrlReWriter使用的是:Intelligencia.UrlRewriter

IIS:IIS6.0(XP)

以下是笔记:

利用UrlReWriter进行URL重写的说明:
1、从http://www.urlrewriting.net/ 下载源码(只找到了源码)。
2、进行源码编译得到 Intelligencia.UrlRewriter.dll(如果不想编译,可以从 这里下载 )。
3、新建网站,注意选择Http方式,利用IIS服务器。
4、对该网站添加对 Intelligencia.UrlRewriter.dll 的引用。
5、配置web.config:
主要是三部,A、添加对dll包的引用 B、配置HttpModules C、配置url重写
下面是完整的web.config

 <?  xml version="1.0"  ?> 
 <  configuration  > 
 <  configSections  > 
 <  sectionGroup   name  ="system.web.extensions"   type  ="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  > 
 <  sectionGroup   name  ="scripting"   type  ="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  > 
 <  section   name  ="scriptResourceHandler"   type  ="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   requirePermission  ="false"   allowDefinition  ="MachineToApplication"  /> 
 <  sectionGroup   name  ="webServices"   type  ="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  > 
 <  section   name  ="jsonSerialization"   type  ="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   requirePermission  ="false"   allowDefinition  ="Everywhere"   /> 
 <  section   name  ="profileService"   type  ="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   requirePermission  ="false"   allowDefinition  ="MachineToApplication"   /> 
 <  section   name  ="authenticationService"   type  ="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   requirePermission  ="false"   allowDefinition  ="MachineToApplication"   /> 
 <  section   name  ="roleService"   type  ="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   requirePermission  ="false"   allowDefinition  ="MachineToApplication"   /> 
 </  sectionGroup  > 
 </  sectionGroup  > 
 </  sectionGroup  > 
 <!--  A、添加对dll包的引用  --> 
 <  section   name  ="rewriter"   requirePermission  ="false"   type  ="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"  /> 
 </  configSections  > 
 <!--  C、配置url重写  --> 
 <  rewriter  > 
 <  rewrite   url  ="~/tag/(.+)\.html"   to  ="~/Tag.aspx?tag=$1"   />  
 </  rewriter  > 

 <  appSettings  /> 
 <  connectionStrings  /> 
 <  system.web  > 
 <  compilation   debug  ="false"  > 

 <  assemblies  > 
 <  add   assembly  ="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"  /> 
 <  add   assembly  ="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   assembly  ="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"  /> 
 <  add   assembly  ="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"  /> 
 </  assemblies  > 
 </  compilation  > 
 <  authentication   mode  ="Windows"   /> 
 <  pages  > 
 <  controls  > 
 <  add   tagPrefix  ="asp"   namespace  ="System.Web.UI"   assembly  ="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   tagPrefix  ="asp"   namespace  ="System.Web.UI.WebControls"   assembly  ="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 </  controls  > 
 </  pages  > 

 <  httpHandlers  > 
 <  remove   verb  ="*"   path  ="*.asmx"  /> 
 <  add   verb  ="*"   path  ="*.asmx"   validate  ="false"   type  ="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   verb  ="*"   path  ="*_AppService.axd"   validate  ="false"   type  ="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   verb  ="GET,HEAD"   path  ="ScriptResource.axd"   type  ="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   validate  ="false"  /> 
 </  httpHandlers  > 
 <  httpModules  > 
 <  add   name  ="ScriptModule"   type  ="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <!--  B、配置HttpModules  --> 
 <  add   type  ="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter"   name  ="UrlRewriter"  /> 
 </  httpModules  > 
 </  system.web  > 

 <  system.codedom  > 
 <  compilers  > 
 <  compiler   language  ="c#;cs;csharp"   extension  =".cs"   warningLevel  ="4"  
type  ="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  > 
 <  providerOption   name  ="CompilerVersion"   value  ="v3.5"  /> 
 <  providerOption   name  ="WarnAsError"   value  ="false"  /> 
 </  compiler  > 
 <  compiler   language  ="vb;vbs;visualbasic;vbscript"   extension  =".vb"   warningLevel  ="4"  
type  ="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  > 
 <  providerOption   name  ="CompilerVersion"   value  ="v3.5"  /> 
 <  providerOption   name  ="OptionInfer"   value  ="true"  /> 
 <  providerOption   name  ="WarnAsError"   value  ="false"  /> 
 </  compiler  > 
 </  compilers  > 
 </  system.codedom  > 

 <  system.webServer  > 
 <  validation   validateIntegratedModeConfiguration  ="false"  /> 
 <  modules  > 
 <  remove   name  ="ScriptModule"   /> 
 <  add   name  ="ScriptModule"   preCondition  ="managedHandler"   type  ="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 </  modules  > 
 <  handlers  > 
 <  remove   name  ="WebServiceHandlerFactory-Integrated"  /> 
 <  remove   name  ="ScriptHandlerFactory"   /> 
 <  remove   name  ="ScriptHandlerFactoryAppServices"   /> 
 <  remove   name  ="ScriptResource"   /> 
 <  add   name  ="ScriptHandlerFactory"   verb  ="*"   path  ="*.asmx"   preCondition  ="integratedMode"  
type  ="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   name  ="ScriptHandlerFactoryAppServices"   verb  ="*"   path  ="*_AppService.axd"   preCondition  ="integratedMode"  
type  ="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  /> 
 <  add   name  ="ScriptResource"   preCondition  ="integratedMode"   verb  ="GET,HEAD"   path  ="ScriptResource.axd"   type  ="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"   /> 
 </  handlers  > 
 </  system.webServer  > 

 <  runtime  > 
 <  assemblyBinding   xmlns  ="urn:schemas-microsoft-com:asm.v1"  > 
 <  dependentAssembly  > 
 <  assemblyIdentity   name  ="System.Web.Extensions"   publicKeyToken  ="31bf3856ad364e35"  /> 
 <  bindingRedirect   oldVersion  ="1.0.0.0-1.1.0.0"   newVersion  ="3.5.0.0"  /> 
 </  dependentAssembly  > 
 <  dependentAssembly  > 
 <  assemblyIdentity   name  ="System.Web.Extensions.Design"   publicKeyToken  ="31bf3856ad364e35"  /> 
 <  bindingRedirect   oldVersion  ="1.0.0.0-1.1.0.0"   newVersion  ="3.5.0.0"  /> 
 </  dependentAssembly  > 
 </  assemblyBinding  > 
 </  runtime  > 
 </  configuration  > 

6、配置IIS
控制面板->管理工具->Internet Information Services
选择服务器(计算机名)->Web Sites->Default Web Site->你的网站
右击你的网站->属性->Virtual Directory->Application Settings->Configuration
点击 Add
    Executable:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
    Extension:.*
    Verbs:选中All Verbs
    Script engine:选中
    Check that file exists:不选

点击  OK->OK->OK

7、页面
Default.aspx:

 <  a   href  ="tag/1.html"  > 1 </  a  > 
 <  a   href  ="tag/a.html"  > a </  a  > 
 <  a   href  ="tag/汉字.html"  > 汉字 </  a  > 

Tag.aspx:
后台:

 protected   void  Page_Load( object   sender, EventArgs e)
{
  if  (! IsPostBack)
{
  string  queryStr = Request.Params[ "  tag  "  ];
  if  ( string  .IsNullOrEmpty(queryStr))
{
  this .lbl.Text =  "  您没有选择任何东西  "  ;
}
  else  
{
  this .lbl.Text =  "  您选择了:  "  +  queryStr;
}
}
} 

前台:
您输入的是:

 <  asp:Label   runat  ="server"   ID  ="lbl"  ></  asp:Label  > 

8、测试成功!

9、解决Form提交显示原始URL的问题:
这个问题在一位大牛的博客上已经解释的很详细了,这里不再赘述,地址: http://blog.zhaojie.me/2008/01/url-rewrite-3.html
10、存在问题:

1)对于url重写的过程不了解;

2)对于IIS解析请求的过程完全无概念;

3)只是使用了Intelligencia.UrlRewriter,别的不会使用;

4)微软的ActionlessForm.dll也可以解决第9个问题,但是没有精力了;

------------------------

个人感觉:

今早开始查找UrlReWriter的信息及使用方法,知道现在才弄懂一点,这里要感谢博客园,里面的很多文章帮助了我。

看到 http://blog.zhaojie.me/2008/01/url-rewrite-3.html 文章时,只看了一部分,下面看不懂。。。突然发觉asp.net有好多东西,

好多东西要学习,但是

知识无限,精力有限,兴趣有限,时间有限

感觉到人的一生只能在某一方面精通,不可能把所有的东西,甚至自己感兴趣的东西完全学会,突然好伤感。。。

而且,自己学习速度太慢了,本来今天要做的其他事情只好搁置了,哎!就到这里。

风筝

2012.04.11 

 

标签:  UrlReWriter

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于UrlReWriter.net学习笔记的详细内容...

  阅读:43次