用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