【开源】后台权限管理系统升级到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

posted @   俞正东  阅读(1666)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示