日期:2014-05-18  浏览次数:20477 次

.Net URL 重写技术
我现在有个问题就是我在使用 VS2005 的时候想实现 URL 重写,但当我使用微软的组件(URLRewriter.dll)时候却报出未能找到某某元素的错误

消息 2 未能找到元素“section”的架构信息。 E:\BuildURLReWrite\Web.config 11 3 E:\BuildURLReWrite\
消息 3 未能找到属性“name”的架构信息。 E:\BuildURLReWrite\Web.config 11 11 E:\BuildURLReWrite\
消息 4 未能找到属性“type”的架构信息。 E:\BuildURLReWrite\Web.config 11 33 E:\BuildURLReWrite\
消息 5 未能找到元素“httpHandlers”的架构信息。 E:\BuildURLReWrite\Web.config 45 3 E:\BuildURLReWrite\
等等
请问应该在Web.Config中如何设置

------解决方案--------------------
将urlRewriter.dll复制到bin目录下,然后参照以下web.config文件配置

<?xml version="1.0"?>

<configuration>
<!--这里要加入一个configSections节-->
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>

<!--这里要加入一个RewriterConfig用来配置规则-->
<RewriterConfig>
<Rules>
<RewriterRule>
<!--匹配guid参数-->
<LookFor>~/([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12})\/Class.aspx</LookFor>
<SendTo>~/Class/Default.aspx?id=$1</SendTo>
<!--即访问类似于~/9e808623-f0f9-49c4-86f2-9891015d405b/Class.aspx的页面将发往~/Class/Default.aspx?id=9e808623-f0f9-49c4-86f2-9891015d405b-->
</RewriterRule>
</Rules>
</RewriterConfig>

<appSettings/>
<connectionStrings/>
  
<system.web>

<httpHandlers>
<!--这里加入urlRewriter.dll要处理的后缀文件-->
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>

<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>

------解决方案--------------------
<configuration>

<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
  
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/intro.html</LookFor>
<SendTo>~/intro.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
.......
 <system.web>
<httpHandlers>
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
</httpHandlers>
 .....
 </system.web>

</configuration>