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

用UrlRewriter.dll实现asp.net伪静态,失败了~
我做的步骤是这样的:

1.在项目里面引用UrlRewriter.dll到bin目录中;(UrlRewriter.dll的版本是1.0.4532.19418)

2.在项目Web.config中配置xml,对应的局部如下:
XML code

<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/d(\d+)\.aspx</LookFor>
        <SendTo>~/default.aspx?id=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>
  <system.web>
    <httpHandlers>
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    </httpHandlers>
  </system.web>


3.发布项目网站,在发布好的网站目录的bin文件夹里面,把UrlRewriter.dll拷贝进去;

4.在IIS中将发布的网站文件设置为“默认网站”,在“默认网站”->“属性”->“主目录”->“配置”->“添加”里面,添加如下内容:

“可执行文件”处,填入:c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll(这路径是拷贝过来的,可靠)

“扩展名”处,填入:.html

“动作”处,选择“限制为”,填入:GET,POST,HEAD

把“检查文件是否存在”取消勾选

到这里就结束一切设置了。但发现在IE上填入localhost并回车,路径并没有重写,在网站主页面填入表单并转入子页面,发现子页面显示的路径还是物理路径:http://localhost/ResultsPage.aspx,而不是我要的比如http://hostname/default.aspx?id=11这种形式。

不知道失败的原因究竟是什么。求指教!

------解决方案--------------------
转入子页面的语句是否使用的路由?或者表单提交的地址是否是路由形式的地址。
------解决方案--------------------
你的url重写是aspx写成aspx啊,又不是html写到aspx上

XML code

 <RewriterRule>
        <LookFor>~/d(\d+)\.aspx</LookFor>
        <SendTo>~/default.aspx?id=$1</SendTo>
      </RewriterRule>

------解决方案--------------------
<LookFor>~/d(\d+?)\.aspx</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>

<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>
------解决方案--------------------


http://blog.csdn.net/jocklyhu/article/details/5982233