zoukankan      html  css  js  c++  java
  • netcore 3.1 自定义404逻辑

    404页面,以前在netframework里,需要在iis上配置,或者在web.config里配置,在netcore mvc里,则可以用中间件来实现,非常简单!(别被“中间件”这个名词吓坏了)!!!

    直接上代码,

    1、首先创建一个404页面,比如:

            [Route("error/404")]
            public IActionResult Error404()
            {
                  return View();
            }

    上面的是Action,再创建对应的View页面,View页面我就不贴代码了。

    2、写中间件,StartUp类的Configure方法里,

    只要一句话:

      //404
                app.Use(async (context, next) =>
                {
                    await next.Invoke();
                    if (context.Response.StatusCode == 404)
                    {
                        //也可以定义为其他地址(沐雪微商城)
                          context.Response.Redirect("/error/404");
                    }
                });
    
                //404 end

    具体的代码如下:

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLeftTime)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                
    
                string OpenSwagger = Configuration.GetSection("AppSettingConfig:OpenSwagger").Value;//是否开启swagger
                if (OpenSwagger == "1")
                {
                    app.UseSwagger().UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "MuXue.WeTao.Mall.Web API V1"); });
                }
    
                app.UseStaticFiles();
    
                app.UseRouting();
    
                app.UseCors(MyAllowSpecificOrigins);
                app.UseAuthentication(); //一定要在这个位置(app.UseAuthorization()上面)
                app.UseAuthorization();
    
                //404
                app.Use(async (context, next) =>
                {
    //其他业务
    await next.Invoke(); if (context.Response.StatusCode == 404) { //也可以为其他地址,甚至还可以只输出一句话 context.Response.Redirect("/error/404"); } }); //404 end app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // endpoints.MapControllerRoute( // name: "areas", // pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}" //); }); }

     最简单的404返回还可以直接返回一句话:

     if (context.Response.StatusCode == 404)
                    {
                        await context.Response.WriteAsync("404");
                    }
  • 相关阅读:
    SVN的使用
    ajax 显示,删除,批量删除,修改反填功能实现
    Linux 安装软件的几种方式
    《面向对象软件开发实践》笔记一
    Entity Framework 新手入门友好实例
    MIT 计算机科学及编程导论 Python 笔记 1
    JetBrains套装免费学生授权申请(IntelliJ, WebStorm...)
    我的十月
    关于《未成年人网络保护条例(草案征求意见稿)》的意见
    C# 分隔字符串成为字符串数组的方法(保留分隔符)
  • 原文地址:https://www.cnblogs.com/puzi0315/p/13062159.html
Copyright © 2011-2022 走看看