zoukankan      html  css  js  c++  java
  • 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类

    namespace ActionlessForm {
    public class Form : System.Web.UI.HtmlControls.HtmlForm
    {
    protected override void RenderAttributes(HtmlTextWriter writer)
    {
    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>

    成功!
  • 相关阅读:
    使用 Sublime、WebStorm 开发 Jade
    3-微信小程序开发(小程序的目录结构说明)
    1-微信小程序开发(安装软件和运行第一个微信小程序)
    29-ESP8266 SDK开发基础入门篇--编写TCP 客户端程序(Lwip RAW模式,非RTOS版,精简入门)
    28-ESP8266 SDK开发基础入门篇--编写wifi模块TCP 客户端程序(官方API版,非RTOS版)
    27-ESP8266 SDK开发基础入门篇--编写Android SmartConfig一键配网程序
    26-ESP8266 SDK开发基础入门篇--编写WIFI模块 SmartConfig/Airkiss 一键配网
    25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器
    17-网页,网站,微信公众号基础入门(使用Adobe Dreamweaver CS6 制作网页/网站)
    15-网页,网站,微信公众号基础入门(网页版MQTT,做自己的MQTT调试助手)
  • 原文地址:https://www.cnblogs.com/huangjihua/p/4125205.html
Copyright © 2011-2022 走看看