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学习笔记的详细内容...