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" 的位置标记明确设置的。
- 配置文件 \xx\web.config
- 配置源:
- : <modules runAllManagedModulesForAllRequests="true" />
- : <handlers>
- : <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”。请注意属性名称区分大小写。源错误:
- 行 : 设置为 true。
- 行 : -->
- 行 : <compilation debug="true" targetFramework="4.0"/>
- 行 : <!--
- 行 : 通过 <authentication> 节可以配置 ASP.NET 使用的
- 源文件: E:\NET\CRM.Web\web.config 行:
网上的解决办法: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了
标签:错误,配置文件,静态,配置,html,NET,页面 From: https://www.cnblogs.com/liaoweiyang/p/17213003.html