日期:2014-05-17  浏览次数:20490 次

ASP.Net下用 URLRewriter 进行重写不起作用


参考《在 ASP.NET 中执行 URL 重写(RewritePath)》进行URL重写,写出来的代码没起作用……

重写页面举例:

首页:http://127.0.0.1/default.aspx
详细页面:http://127.0.0.1/item.aspx?guid=7C8027EA-A4ED-467c-B17E-1B51CE74AF57
类别页面:http://127.0.0.1/category.aspx?id=3

1、已将 URLRewriter.dll 拷贝到 bin 文件夹下。

2、修改了 web.config 文件,具体如下:

<!-- UrlRewriter for .net2.0 配置第一步(共三步) -->
<configSections>
  <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>

<!-- UrlRewriter for .net2.0 配置第二步(共三步) -->
<!-- 地址重写规则 -->
<!-- 奇怪:这里配置的重写规则不起作用?????? -->

<RewriterConfig>
  <Rules>
    <!-- 首页重写规则 -->
    <RewriterRule>
      <LookFor>~/default</LookFor>
      <SendTo>~/default.aspx</SendTo>
    </RewriterRule>

    <!-- 详细页面重写规则 -->
    <RewriterRule>
      <LookFor>~/([a-zA-Z0-9]*)\.aspx</LookFor>
      <SendTo>~/item.aspx?guid=$1</SendTo>
    </RewriterRule>

    <!-- 类别页面重写规则 -->
    <RewriterRule>
      <LookFor>~/category/(\d{1})</LookFor>
      <SendTo>~/category.aspx?id=$1</SendTo>
    </RewriterRule>
  </Rules>
</RewriterConfig>

<!-- UrlRewriter for .net2.0 配置第三步(共三步) -->
<!-- 教程说可以使用 HTTP 模块或者 HTTP 处理程序来执行 URL 重写,这里使用了HTTP 模块进行处理 -->
<!--
  <httpHandlers>
    <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
  </httpHandlers>
-->

<httpModules>
  <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>



------解决方案--------------------
<httpHandlers> 
中添加
<add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
------解决方案--------------------
使用现成控件 一般都是配置的问题
------解决方案--------------------

还要再设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。
------解决方案--------------------
探讨
引用:
还要再设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。


我用的 server 2008,IIS7 里没有上面设置的选项~~

------解决方案--------------------
探讨
引用:
还要再设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。


我用的 server 2008,IIS7 里没有上面设置的选项~~