ASP.NET伪静态页面的实现和伪静态在IIS7.0中的配置

ASP.NET伪静态页面的实现和伪静态在IIS7.0中的配置

关于伪静态,其实就是重写URl,之前也不清楚怎么配置IIS,在项目中用VS运行很正常,当将网站发布后,在IIS中伪静态就失效了,不能访问,会报出404(不存在)的错误等其他的错误提示,今天在网上逛了几个小时 搜遍了 ,最后都是失败,网上大多数是在IIs6.0 以及更低版本上的配置,但在IIS7.0 以上的版本就不行了,不多说,直接正题:
首先你要在你的项目里引用两个DLL:

URLRewriter.dll

  ActionlessForm.dll

真正实现重写的是URLRewriter.dll 但是如果你要实现分页,那么必须使用这个ActionlessForm .dll

一.添加URLRewriter.dll

1.(保证伪静态可以在vs项目中运行)下载一个URLRewriter.dll 程序集,
在项目中引用这个程序集,伪静态语法...(例把.aspx 的页面用.html来表示,web.config文件中--> 添加 以下节点
<configSections>
<section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule><!--一个参数->
<LookFor>~/cn/ss_(.[/d]*)/.html</LookFor>
<SendTo>~/cn/news.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule><!--传两个参数的-->
<LookFor>~/cn/ss_(.[/d]*)0(.[/w]*).html</LookFor> <!--(.[/d]*)(.[/w]*).html 或者 ss_,(.[0-9]*),(.[0-9]*)/.html-->
<SendTo><![CDATA[~/cn/news.aspx?id=$1&sid=$2]]></SendTo>
</RewriterRule>
<RewriterRule><!--三个参数-->
<LookFor>~/cn/ss_(.[/d]*)0(.[/w]*)0(.[/w]*).html</LookFor><SendTo><![CDATA[~/ZH-CN/news.aspx?id=$1&sid=$2&n_id=$3]]></SendTo>
</RewriterRule>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>

2.发布网站在IIS中运行
你的网站-->IIS中处理程序映射-->
添加脚本映射(路径:*.html可执行文件%windir%/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 名称:任意,比如Hml )
添加通配符脚本映射(路径:*可执行文件:C:/Windows/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 名称:任意,比如All)
托管处理程序映射(路径:*可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)-------->
IIS中 模块-->添加---->(名称:任意 如All 类型:URLRewriter.ModuleRewriter把 仅针对向asp.net 应用程序或托管处理程序发出请求调用 勾上 ok)
-->ok
3.测试

二.添加 ActionlessForm.dll

1.添加ActionlessForm.cs类

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> namespace ActionlessForm{
public class Form:System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriterwriter)
{
writer.WriteAttribute(
" name " , this .Name);
base .Attributes.Remove( " name " );
writer.WriteAttribute(
" method " , this .Method);
base .Attributes.Remove( " method " );
this .Attributes.Render(writer);
base .Attributes.Remove( " action " );
if ( base .ID != null )
writer.WriteAttribute(
" id " , base .ClientID);
}}}

创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要 使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容:

<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 然后,将 <form runat="server">(如果有)替换为: <skm:Form id="Form1" method="post" runat="server"> 并将右边的 </form> 标记替换为:

</skm:Form>

成功!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值