应用URLRewriter.dll在web.config实现伪静态,在IIS上无法实现 本地用vs2008测试的时候没问题 放到iis里的话 就不支持伪静态了.需要怎么设置? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 URLRewriter.dll这东西要添加到IIS 在iis里的ISAPI筛选器添加: 路径 名称1.C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll ASP.Net_2.0.50727.02.C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll ASP.Net_2.0_for_V1.13.C:\urlrewriter\UrlRewriter.dll(这个文件必须在C盘根目录) urlwriter 使用说明:(重点在Web.config中的<RewriterConfig>节点)一、把文件夹中的URLRewriter.dll拷到项目的Bin目录下,并添加一下引用二、打开Web.config文件,加三个节点1.这个节点,在创建成Ajax网站时就已经有了,只要把里面的那一节加进去就OK了<configSections> <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /></configSections>2.这一节点就写在</configSections>下面就好了,在Web.config里的智能提示中没有这个节点<RewriterConfig> <Rules> <RewriterRule> <!--这个节点表示在根目录下访问index.html,比如说http://localhost/website/index.html,这个时候就会与这一项匹配--> <!--如果地址是http://localhost/website/aaa/index.html,这个时候就不会与这一项匹配--> <!--这个使用的时候,页面名称可以随便换,这里叫index.html,也可以叫成aaa.html,bbb.html,只要在访问、超链接、转向等时候写的是这个地址就可以了--> <!--如果这个节点里写的是~/abc/list.html的话,那和访问路径就应该是http://localhost/website/abc/list.html--> <!-- 这里有一个最大的好处,不用考虑参数,比如说,我在index.html(Default.aspx)里有一个a标签,转到Default2.html(Default2.aspx) 并且带了参数<a href="Default.html?id=3&cid=7">go</a> 可以看到,下面那一节的配置方法还是这样写,不用考虑参数,参数就参传过去,也就是说在Default2.html(Default2.aspx)的cs文件里 还是像以前一样去得到参数就可以了Request.QueryString["id"],Request.QueryString["cid"] --> <LookFor>~/index.html</LookFor> <!--这里就是上面这个地址指向的项目中真实的页面位置,这个就没有什么好多说的,把位置写正确才最重要的--> <SendTo>~/Default.aspx</SendTo> </RewriterRule> <!--有多个节点就再写一对就好了--> <RewriterRule> <LookFor>~/Default2.html</LookFor> <SendTo>~/Default2.aspx</SendTo> </RewriterRule> </Rules></RewriterConfig>3.这个节点,在创建成Ajax网站时就已经有了,只要把里面的那二节加进去就OK了<httpHandlers> <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /></httpHandlers>三、到此就结束了,在开发过程中,还是和以前一样,只是把访问路径的文件名由.aspx改成.html就可以了。这里最重要的就是访问路径的配置,我的习惯就是aspx文件是什么样的路径,那html也是什么样的路径,这样写特别是对于已经开发过一段时间的项目来说只要Web.config里这样对应起来去写,在页面上,只要把所的有.aspx改成.html就可以了!!注意:如果用替换的方法的话,请在替换完成后,把Page指令里的CodeFile的值还改回XXX.aspx.cs,否则会出错四、这里要说说IIS了,因为本地在开发的时候在Bin里面有dll文件,所以没事,但是放到IIS下就不行了,所以IIS在有一些操作IIS 6.0:选择要操作的网站,右键-属性-在第一个选项卡中点“配置”-添加-浏览-'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'-扩展名为:.html-把'检查文件是否存在'去掉。一路再“确定”回去就好了。IIS 7.0:选择要操作的网站,在右边视图中找到'处理程序映射'-在右边'添加脚本映射'请求路径:*.html可执行文件:'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'名称:自己看着写吧然后确定就好了最后说明一下,这样去配置伪静态的时候,会对原本的html文件有影响,所以,如果当有这种情况,特别是在使用ckeditor和ckfinder的时候,一定要在web.config里再去配置一个节<buildProviders>,配置的位置是在<compilation debug="true">这里面<compilation debug="true"> <assemblies> ...... </assemblies> <!-- 加上此节点,保证原本就是.html类型的文件能正常访问,就是要加下面的这一节--> <buildProviders> <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> </buildProviders></compilation> http://download.csdn.net/detail/evasunny2008/2097705这里是我的一个例子,可以参考一下。。 先把IIS应用程序池的托管管理道模式为集成(为了可以做第3,4步) 首先在IIS中的站点里,找到处理程序映射。双击进去 1、添加脚本映射(路径:*.html 可执行文件%windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 名称:任意,比如Html ) 2、添加通配符脚本映射(路径:* 可执行文件:C:\Windows\Microsoft.NET\Frameworkv2.0.\50727\aspnet_isapi.dll 名称:任意,比如All) 3、托管处理程序映射(路径:*.html 可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate) 4、IIS中找到模块(双击进去)-->添加托管模块---->(名称:任意 如All 类型:URLRewriter.ModuleRewrite把 仅针对向asp.net 应用程序或托管处理程序发出请求调用 勾上 5、将应用程序池的托管管理道模式为经典 项目中不能使用page声明,找不到类型或命名空间名称“page” ASP.NET Htmlencode转换写入数据库 集成Windows验证,在什么情况下为输入用户名密码页面就能显示? asp.net ViewState 超時 文件读写高级问题 寻求ASP.NET工作 能不能在td的onclick中把session变量设为null 关于asp.net2.0登陆的问题 求助:服务端与客户端通信的问题... 怎么用那个资源编辑啊,怎么把图片弄到那个resx文件里去啊,还有在CS里怎么用啊?? 想要把自己做的网站放到网上。。。求流程。。。 算法,求四舍五入
路径 名称
1.C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll ASP.Net_2.0.50727.0
2.C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll ASP.Net_2.0_for_V1.1
3.C:\urlrewriter\UrlRewriter.dll(这个文件必须在C盘根目录) urlwriter
一、把文件夹中的URLRewriter.dll拷到项目的Bin目录下,并添加一下引用二、打开Web.config文件,加三个节点
1.这个节点,在创建成Ajax网站时就已经有了,只要把里面的那一节加进去就OK了
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>2.这一节点就写在</configSections>下面就好了,在Web.config里的智能提示中没有这个节点
<RewriterConfig>
<Rules>
<RewriterRule>
<!--这个节点表示在根目录下访问index.html,比如说http://localhost/website/index.html,这个时候就会与这一项匹配-->
<!--如果地址是http://localhost/website/aaa/index.html,这个时候就不会与这一项匹配-->
<!--这个使用的时候,页面名称可以随便换,这里叫index.html,也可以叫成aaa.html,bbb.html,只要在访问、超链接、转向等时候写的是这个地址就可以了-->
<!--如果这个节点里写的是~/abc/list.html的话,那和访问路径就应该是http://localhost/website/abc/list.html-->
<!--
这里有一个最大的好处,不用考虑参数,比如说,我在index.html(Default.aspx)里有一个a标签,转到Default2.html(Default2.aspx)
并且带了参数<a href="Default.html?id=3&cid=7">go</a>
可以看到,下面那一节的配置方法还是这样写,不用考虑参数,参数就参传过去,也就是说在Default2.html(Default2.aspx)的cs文件里
还是像以前一样去得到参数就可以了Request.QueryString["id"],Request.QueryString["cid"]
-->
<LookFor>~/index.html</LookFor>
<!--这里就是上面这个地址指向的项目中真实的页面位置,这个就没有什么好多说的,把位置写正确才最重要的-->
<SendTo>~/Default.aspx</SendTo>
</RewriterRule>
<!--有多个节点就再写一对就好了-->
<RewriterRule>
<LookFor>~/Default2.html</LookFor>
<SendTo>~/Default2.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>3.这个节点,在创建成Ajax网站时就已经有了,只要把里面的那二节加进去就OK了
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>三、到此就结束了,在开发过程中,还是和以前一样,只是把访问路径的文件名由.aspx改成.html就可以了。
这里最重要的就是访问路径的配置,我的习惯就是aspx文件是什么样的路径,那html也是什么样的路径,这样写特别是对于已经开发过一段时间的项目来说
只要Web.config里这样对应起来去写,在页面上,只要把所的有.aspx改成.html就可以了!!
注意:如果用替换的方法的话,请在替换完成后,把Page指令里的CodeFile的值还改回XXX.aspx.cs,否则会出错四、这里要说说IIS了,因为本地在开发的时候在Bin里面有dll文件,所以没事,但是放到IIS下就不行了,所以IIS在有一些操作
IIS 6.0:
选择要操作的网站,右键-属性-在第一个选项卡中点“配置”-添加-浏览-'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'-扩展名为:.html
-把'检查文件是否存在'去掉。一路再“确定”回去就好了。IIS 7.0:
选择要操作的网站,在右边视图中找到'处理程序映射'-在右边'添加脚本映射'
请求路径:*.html
可执行文件:'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'
名称:自己看着写吧
然后确定就好了
最后说明一下,这样去配置伪静态的时候,会对原本的html文件有影响,所以,如果当有这种情况,特别是在使用ckeditor和ckfinder的时候,一定要在
web.config里再去配置一个节<buildProviders>,配置的位置是在<compilation debug="true">这里面
<compilation debug="true">
<assemblies>
......
</assemblies>
<!-- 加上此节点,保证原本就是.html类型的文件能正常访问,就是要加下面的这一节-->
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
这里是我的一个例子,可以参考一下。。
首先在IIS中的站点里,找到处理程序映射。双击进去
1、添加脚本映射(路径:*.html 可执行文件%windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 名称:任意,比如Html )
2、添加通配符脚本映射(路径:* 可执行文件:C:\Windows\Microsoft.NET\Frameworkv2.0.\50727\aspnet_isapi.dll 名称:任意,比如All)
3、托管处理程序映射(路径:*.html 可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)
4、IIS中找到模块(双击进去)-->添加托管模块---->(名称:任意 如All 类型:URLRewriter.ModuleRewrite
把 仅针对向asp.net 应用程序或托管处理程序发出请求调用 勾上
5、将应用程序池的托管管理道模式为经典