aspnetcore实现简单的伪静态化

    作者:课课家教育更新于: 2019-08-06 22:49:58

    大神带你学编程,欢迎选课

    aspnetcore 实现简单的伪静态化

    ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core,您可以:

    • 创建 Web 应用程序和服务、IoT 应用和移动后端。
    • Windows、macOS 和 Linux 上使用喜爱的开发工具
    • 部署到云或本地。
    • 在 .NET Core 或 .NET Framework 上运行。

    ASP.NET Core是一个免费且开放源代码的web框架,以及由微软和社区开发的下一代ASP.NET。它是一个模块化框架,既可以Windows上的完整.NET Framework上运行,也可以在跨平台.NET Core上运行。

    Intro#

    在我的活动室预约项目中,有一个公告模块,类似于新闻发布,个人感觉像新闻这种网页基本就是发布的时候编辑一次之后就再也不会改了,最适合静态化了, 静态化之后用户请求的就是静态文件基本不再需要服务器端查询数据库甚至服务器端渲染,可以一定程度上提升服务器的处理能力以及优化用户体验,而且这种静态化的url对 Seo 比较友好。

    由于我的这个项目正在开发中,迁移起来不太方便,所以使用的是伪静态化,看上去是访问的 *.html,实际上并不是 html,而是需要服务器处理的。

    GetStarted#

    配置路由信息,注意顺序,伪静态的路由要在默认路由之前

    Copy
    app.UseMvc(routes =>
    {
        routes.MapRoute("Notice", "/Notice/{path}.html", new
        {
            controller = "Home",
            action = "NoticeDetails"
        });
    
        routes.MapRoute(name: "areaRoute",
            template: "{area:exists}/{controller=Home}/{action=Index}");
    
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}");
    });

    控制器代码:

    Copy
    /// 
    /// 公告详情
    /// 
    /// 访问路径
    /// 
    public async Task NoticeDetails(string path)
    {
        if (string.IsNullOrWhiteSpace(path))
        {
            return RedirectToAction("Notice");
        }
        try
        {
            var noticeBll = HttpContext.RequestServices.GetService();
            var notice = await noticeBll.FetchAsync(n => n.NoticeCustomPath == path.Trim());
            if (notice != null)
            {
                notice.NoticeVisitCount += 1;
                await noticeBll.UpdateAsync(notice, x => x.NoticeVisitCount);
    
                return View(notice);
            }
            else
            {
                return RedirectToAction("Notice");
            }
        }
        catch (Exception ex)
        {
            Logger.Error(ex);
            throw;
        }
    }
    数百万开发人员使用过(并将继续使用)ASP.NET 4.x 创建 Web 应用。 ASP.NET Core 是重新设计的 ASP.NET 4.x,更改了体系结构,形成了更精简的模块化框架。
    小编结语:ASP.NET Core 与常用客户端框架和库(包括 Blazor、Angular、React 和 Bootstrap)无缝集成。 有关详细信息,请参阅 ASP.NET Core 中的 Blazor 简介 和“客户端开发” 下的相关主题。一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

课课家教育

未登录