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

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

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

csporj文件修改

如上图:

将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需要另外配置下不然默认返回的第一个字母是小写的

autofac容器想要在别的层使用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfwyp.html