• 【开源】后台权限管理系统升级到aspnetcore3.1


    netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源介绍

    GitHub:https://github.com/yuzd/AntMgr

    csporj文件修改

    image

    如上图:

    • 将TargetFramework 由 【netcoreapp2.2】 变更成 【netcoreapp3.1】
    • 由于使用的是Razor渲染 新增 <AddRazorSupportForMvc>true</AddRazorSupportForMvc>

    image

    如上图,删除以下包,因为在aspnetcore3.1 sdk是自带了

    • Microsoft.AspNetCore.App
    • Microsoft.AspNetCore.Razor.Design
    • Microsoft.VisualStudio.Web.CodeGeneration.Design

    由于我使用了 NewtonsoftJson 新增

    • Microsoft.AspNetCore.Mvc.NewtonsoftJson 包

    Program.cs文件里面的Host初始化代码修改

    老的方式:

    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .ConfigureLogging()
                    .UseNLog();
        }
    
    

    新的方式如下面:

    如果搭配autofac的话:

    • 需要添加最新版本的Autofac.Extensions.DependencyInjection
    • 如下新增 .UseServiceProviderFactory(new AutofacServiceProviderFactory())
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseServiceProviderFactory(new AutofacServiceProviderFactory()) //这里是autofac配合3.1的新方式
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>()
                        .ConfigureLogging()
                        .UseNLog();
                    });
        }
    
    

    StartUp.cs文件变更

    针对autofac的改动

    下面是老的方式 返回一个 被autofac包装的 IServiceProvider

    
    
    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        
        
    }
    

    下面是新的方式

            // 添加这个 是为了生成一个 容器 在别的地方使用
           public ILifetimeScope AutofacContainer { get; private set; }
    
           // 由于在 program.cs里面注册了 autofac  factory 所以会走进来
            public void ConfigureContainer(ContainerBuilder builder)
            {
                //autofac打标签模式 文档:https://github.com/yuzd/Autofac.Annotation
                builder.RegisterModule(new AutofacAnnotationModule(
                        this.GetType().Assembly,
                        typeof(BaseRepository<>).Assembly,
                        typeof(HttpContext).Assembly)
                    .SetAllowCircularDependencies(true)
                    .SetDefaultAutofacScopeToInstancePerLifetimeScope());
    
            }
            
    
    

    注册mvc的方式改动

    下面是老的方式:

      app.UseMvc(routes =>
        {
            // areas
            routes.MapRoute(
                name: "Admin",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    
    

    下面是新的方式:

    
    app.UseRouting();
    
    app.UseCors();//注意 这个必须放在 中间
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapRazorPages();
        endpoints.MapAreaControllerRoute(
            name: "Admin", "Admin",
            pattern: "Admin/{controller=Home}/{action=Index}/{id?}");
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
    });
    

    用json需要另外配置下不然默认返回的第一个字母是小写的

    image

    autofac容器想要在别的层使用

    image

  • 相关阅读:
    关于table表格的一些问题
    leetcode 845. 数组中的最长山脉 做题笔记
    leetcode 845. 数组中的最长山脉 做题小结
    leetcode 925. 长按键入小结
    leetcode 925. 长按键入小结
    java单链表反转 详细讲述
    java单链表反转 详细讲述
    Leetcode 3. 无重复字符的最长子串 做题小结
    Leetcode 3. 无重复字符的最长子串 做题小结
    复变函数的幂函数
  • 原文地址:https://www.cnblogs.com/yudongdong/p/12202893.html
Copyright © 2020-2023  润新知