网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > html

MVC/C#如何以静态html格式访问?

2022/2/23 20:33:33

前一阵子用MVC做了个网站项目要求以静态html格式来访问,说是这样对搜索引擎更加友好,今天我就将解决方法分享给大家。 一共可以通过三个步骤来实现。一 、添加自定义的routes路由 public class RouteConfig { public static void RegisterRoutes(Ro…

        前一阵子用MVC做了个网站项目要求以静态html格式来访问,说是这样对搜索引擎更加友好,今天我就将解决方法分享给大家。

        一共可以通过三个步骤来实现。

一 、添加自定义的routes路由

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            //name=article的路由是我自定义的的路由
            routes.MapRoute(
                 name: "Article",
                 url: "{controller}/{id}/{htmlname}.html",
                 defaults: new { action = "Index", id = UrlParameter.Optional, htmlname = UrlParameter.Optional },
                 constraints: new { action = "Index" }
                 );
        }
    }

二、webconfig中增加对后缀.html交由asp.net处理的映射

在webconfig的

      <add name="RewriteHtml64" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness64" />
      <add name="RewriteHtml32" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness32" />

        这里我是对64位系统和32位系统都做了映射,我使用的是net4.5。

        至此伪静态功能已经实现了。

三、实现静态页面与动态页面直接的切换

        我是在global中Application_BeginRequest里面进行处理

        protected void Application_BeginRequest()
        {
            HttpContext context = HttpContext.Current;
            string requestHtmlPath = context.Request.Path;
            //如果请求中带有html的后缀,需要进行处理
            if (requestHtmlPath.EndsWith(".html"))
            {
                string serverPath = context.Server.MapPath(requestHtmlPath);
                if (File.Exists(serverPath))
                //直接重写地址,不会产生跳转请求
                    context.RewritePath("~" + requestHtmlPath);
            }
        }

        这里会产生一个问题,就是如果是伪静态的页面,能正常访问,但是重写地址之后,访问真正的静态页面,就会出现“未能执行 URL。”错误。这时只需要在webconfig的system.web节点下添加

    <httpHandlers>
      <add  verb="*" path="*.html" type="System.Web.StaticFileHandler" />
    </httpHandlers>

        就能正常访问静态页面了。

        通过以上内容我们知道了MVC/C#如何以静态html格式访问,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • document.forms[0]是什么意思?怎么用?

    document.forms我们都知道是用来表示获取当前页面的所有表单,那么document.forms[0]是什么意思呢?document.forms[0] 用来获得当前网页多个表单中的第一个表单。我们可以通过下面的例子看看如何使用它。<!DOCTYPE html><html xmlns="http://www.w3.org/19…

    2021/6/5 16:43:47
  • urldecode解码除了+号还有其它符号吗?

    urlencode函数对字符串进行URL解码。例如通过urlencode编码后的字符串,可通过UrlDecode进行解码。对Url路径加码的函数是UrlEncode 用法相反,和UrlDecode是一致对应的 那么urldecode解码除了+号还有什么特殊符号呢? urldecode解码除了+号还有一些其他特殊字符…

    2021/5/16 16:35:57
  • 实例告诉你如何正确使用table的thead、tbody、tfoot?

    table的thead、tbody、tfoot作用为了让大表格(table)在下载的时候可以分段的显示,就是说在浏览器解析HTML时,table是作为一个整体解释的,使用TBODY可以优化显示。如果表格很长,用tbody分段,可以一部分一部分地显示,不用等整个表格都下载完成。下载一块显示一块,表格…

    2021/3/24 21:46:13
  • 如何不让IIS缓存png图片、js脚本、html网页等静态文件

    https://blog.csdn.net/chelen_jak/article/details/19234861禁止IIS缓存静态文件(png、js、html等)背景:IIS为了提高性能,默认情况下会对静态文件js、html、gif、png等做内部缓存,这个缓存是在服务器iis进程的内存中的。IIS这么做在很大程度上可以提高静态文件的访问…

    2021/3/21 16:34:03
  • HTML中meta元素标签的三种常见用法

    HTML meta 元素meta标签描述了一些基本的元数据。标签提供了元数据.元数据也不显示在页面上,但会被浏览器解析。META 元素通常用于指定网页的描述,关键词,文件的最后修改时间,作者,和其他元数据。元数据可以使用于浏览器(如何显示内容或重新加载页面),搜索引擎(关…

    2021/2/28 21:05:35