25°

【开源】后台权限管理系统升级到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; }
   <span class="hljs-comment">// <span class="zh-hans">由于在</span> program.cs<span class="zh-hans">里面注册了</span> autofac <span class="zh-hans">的</span> factory <span class="zh-hans">所以会走进来</span></span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">ConfigureContainer</span>(<span class="hljs-params">ContainerBuilder builder</span>)</span>
    {
        <span class="hljs-comment">//autofac<span class="zh-hans">打标签模式</span> <span class="zh-hans">文档:</span>https://github.com/yuzd/Autofac.Annotation</span>
        builder.RegisterModule(<span class="hljs-keyword">new</span> AutofacAnnotationModule(
                <span class="hljs-keyword">this</span>.GetType().Assembly,
                <span class="hljs-keyword">typeof</span>(BaseRepository&lt;&gt;).Assembly,
                <span class="hljs-keyword">typeof</span>(HttpContext).Assembly)
            .SetAllowCircularDependencies(<span class="hljs-literal">true</span>)
            .SetDefaultAutofacScopeToInstancePerLifetimeScope());

    }

注册mvc的方式改动

下面是老的方式:

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

下面是新的方式:


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

本文转载自博客园,原文链接:https://www.cnblogs.com/yudongdong/p/12202893.html

全部评论: 0

    我有话说: