zoukankan      html  css  js  c++  java
  • ASP.NET MVC 实现伪静态

     

     

     

    1  什么是伪静态?

    现在很多门户网站或者各大电商平台的网站的链接最后都是.htm或者.htm结尾,那么他们的网页真的是静态的html吗?拿京东来说,有无数个页面都都Html,在商品每时每刻都可能被更新的情况下,那是不是要有专门的人员来修改html静态页面呢,可想而知当然不是,不管是javaweb还是asp.net的动态页面绝对不是以.html结尾的。

    2 为什么要实现伪静态?

    那么我们为什么要注重url的结尾呢,那就是SEO(Search Engine Optimization)--搜索引擎优化,虽然现在主流的搜索引擎都开始支持动态的url,可是我们的网站为了排名尽量靠前,我们还是要尽量符合搜索引擎的规则。

    3  MVC如何实现伪静态?

    通过修改配置文件和路由来实现。

    在配置文件中找到system.webServer节点下面的modules节点,添加runAllManagedModulesForAllRequests="true",这是让所有的请求包括静态页面和图片,js等等都进入asp.net的管道。

    然后设置路由配置:

    这样一来,就可以通过下面的URL来访问页面了,光看地址是静态网页的格式,但实际上还是动态的网页。

    但是runAllManagedModulesForAllRequests="true"这种方式是不好的。runAllManagedModulesForAllRequests就像 IIS Modules 和请求的一个通道开关,如果这个开关是打开的,那么访问此站点的所有请求都会进入 Modules 中进行处理,这其中就包含一些静态文件的请求,这也是最常见的一种“没必要处理”的请求,因为请求进入 Modules,那就要有相应的程序进行处理,这就造成没必要的性能开销,因为静态文件只是获取展示,完全没必要进行 Modules 处理,小的站点无所谓,当一些很大 PV 站点也这样做的时候,就会对 IIS 的 Modules 程序处理造成一些“压力”

    用这种方式做伪静态后,如果有真的静态页面,一定不要将静态页面放在view文件夹下。否则会去执行controller里面的action,从而导致无法找到资源。

    现在开发完成了,而且跑代码也没任何问题。然后看看部署到iis上会怎么样。

    将文件发布好了以后,部署到iis上,这个过程就不说了

    一切弄好了以后,访问网站,出现:不能在此路径中使用此配置节   的错误。网上找的了解决方案:https://www.cnblogs.com/DHclly/p/6136349.html。为了怕这篇文档丢失,还是在这里记录一下

    HTTP 错误 500.19 - Internal Server Error
    无法访问请求的页面,因为该页的相关配置数据无效。
    详细错误信息:
    模块     IIS Web Core
    通知     BeginRequest
    处理程序       尚未确定
    错误代码       0x80070021
    配置错误       不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现    这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。
    配置文件       xxweb.config
    
    配置源:
    66:     <modules runAllManagedModulesForAllRequests="true" />
    67:     <handlers>
    68:       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />

    解决步骤如下:

    控制面板—>程序—>启用或关闭windows功—>Internet Infomation Service—>万维网服务—>应用程序开发功能—>里面把Asp.Net .选上

     到此,这个问题解决了。

    继续访问,又遇到了问题:处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    解决办法是将配置文件中下面的标出的两行去掉

    再次访问网站http://localhost:8025/home/index.html。遇到错误:无法识别的属性“targetFramework”。请注意属性名称区分大小写。

    “/CRM”应用程序中的服务器错误。
    
    配置错误 
    说明:
    在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。源错误: 
    
    行 24:             设置为 true。
    行 25:         -->26:         <compilation debug="true" targetFramework="4.0"/>27:         <!--28:             通过 <authentication> 节可以配置 ASP.NET 使用的 
    
    源文件: E:NETCRM.Webweb.config    行: 26 

    网上的解决办法:https://blog.csdn.net/muchlin/article/details/6800863

    解决方法:

    修改.NET Framework 版本为相应版本即可,我以前用的是2.0换成4.0的时候出现这个错误。

    我的win7系统,

    1、打开IIs点击IIS根节点

    2、看右边的“操作”-》点击“更改.NET Framework 版本”

    3、选择相应的版本,我这里应该选择v4.0.30319,点击确定

    4、点击IIS的应用程序池

    5、在右边“操作”栏里选择“应用程序默认设置...”

     6、把“.NET Framework 版本”设置为v4.0,点击“确定”即可。

    到此这个问题解决了。

    继续访问http://localhost:8025/home/index.html

    出现404错误。解决方案:http://www.360doc.com/content/15/0103/20/5028907_437812977.shtml#!/xh

     解决办法:

     

     好了,现在可以正常访问:http://localhost:8025/home/index.html了

  • 相关阅读:
    SQL Server 调优系列进阶篇
    封装 RabbitMQ.NET
    RabbitMQ 的行为艺术
    SQL Server 调优系列进阶篇
    SQL Server 调优系列进阶篇
    FastFrameWork 快速开发框架
    SQL Server 调优系列进阶篇
    Java基础:三目运算符
    marquee标签,好神奇啊...
    Java JFrame 和 Frame 的区别
  • 原文地址:https://www.cnblogs.com/jin-/p/9726817.html
Copyright © 2011-2022 走看看