## 简单使用.NET Core Webapi 加MVC 的配置

简单使用.NET Core Webapi 加MVC 的配置

.NET Core 基本配置加Swagger

            #region 添加Swagger
            services.AddSwaggerGen(options =>
            {
                options.IncludeXmlComments($"{AppDomain.CurrentDomain.BaseDirectory}/HrManagementSystem.WebApi.xml", true);
            });
            #endregion
            //配置跨域处理,允许所有来源          
            services.AddCors(r => r.AddPolicy("cors", n =>
            {
                n.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();

            }));
            services.AddControllers().AddNewtonsoftJson(options =>
            {
                // 忽略循环引用
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                // 不使用驼峰
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                // 设置时间格式
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                // 如字段为null值,该字段不会返回到前端
                // options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
            });

        }

        /// 
        ///   //此方法由运行时调用。使用此方法配置HTTP请求管道。
        /// 
        /// 
        /// 
        /// 
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            #region 添加log4net
            loggerFactory.AddLog4Net();
            #endregion 
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();
            // 添加Swagger有关中间件
            app.UseSwagger();
            // 配置SwaggerUI
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");

            });
            //允许所有跨域,cors是在ConfigureServices方法中配置的跨域策略名称
            //注意:UseCors必须放在UseRouting和UseEndpoints之间
            app.UseCors("cors");
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();

            });

//log4net配置
```xml
<?xml version="1.0" encoding="utf-8"?>
<log4net>
	<!-- Define some output appenders -->
	<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
		<file value="log\log.txt" />
		<!--追加日志内容-->
		<appendToFile value="true" />
		<!--防止多线程时不能写Log,官方说线程非安全-->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--可以为:Once|Size|Date|Composite-->
		<!--Composite为Size和Date的组合-->
		<rollingStyle value="Composite" />
		<!--当备份文件时,为文件名加的后缀-->
		<datePattern value="yyyyMMdd.txt" />
		<!--日志最大个数,都是最新的-->
		<!--rollingStyle节点为Size时,只能有value个日志-->
		<!--rollingStyle节点为Composite时,每天有value个日志-->
		<maxSizeRollBackups value="20" />
		<!--可用的单位:KB|MB|GB-->
		<maximumFileSize value="5MB" />
		<!--置为true,当前最新日志文件名永远为file节中的名字-->
		<staticLogFileName value="true" />
		<!--输出级别在INFO和ERROR之间的日志-->
		<!--过滤级别 FATAL > ERROR > WARN > INFO > DEBUG-->
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="FATAL" />
		</filter>
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger -  %message%newline"/>
		</layout>
	</appender>
	<root>
		<priority value="ALL"/>
		<level value="ALL"/>
		<appender-ref ref="rollingAppender" />
	</root>
</log4net>

//MVC .NET core 简单配置

 //此方法由运行时调用。使用此方法将服务添加到容器中。
        //有关如何配置应用程序的更多信息,请访问https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
           
            services.AddControllersWithViews();
            services.AddSession();
            services.AddHttpClient();
        }
        //此方法由运行时调用。使用此方法配置HTTP请求管道。
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseSession();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseStaticFiles();
            app.UseRouting();
            //配置注册MVC的路由
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller}/{action}/{id?}");
            });
        }

//.NET 使用EF

 public HrSqlcontext()
        {

        }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //读取数据库链接字符串
            //动态读取配置文件下得字符串
            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();//构建一个配置容器

            IConfigurationBuilder configurationBuilder1 = configurationBuilder.AddJsonFile("appSettings.json");   //下载这个配置文件Microsoft.Extensions.Configuration.Json

            var buid = configurationBuilder1.Build();//编译构建一次

            optionsBuilder.UseSqlServer(buid["Dbcontent"]);
        }

        /// 
        /// 招聘顾问表
        /// 
        public DbSet<Counselor> DBCounselor { get; set; }
        /// 
        /// 部门表
        /// 
        public DbSet<Department> DBDepartment { get; set; }

简单总结不一定准确

NetCore3.1 使用EntityFrameCore
1.通过Nuget包安装三个软件(最好三个)
EntityFrameworkCore.Sql Server
Microsoft.EntityFrameworkCore.Tools
Microsoft.Extensions.Configuration.Json

2.EntityFramework Core 进行数据迁移
在Vs2019 Tools>Nuget Package Manager>Package Manger Tools 使用

Add-Migration XXXX 进行数据迁移

3.如果迁移出错处理
对VS 2019中ASP.NET Core项目解决:The term ‘Add-Migration’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name

错误如上:
3.1 编译项目。首次在项目中添加EF Core后,这一步必须做,否则都找不到后续要导入的 EntityFrameworkCore.psd1 模块
3.2 找到前述文件的位置,使用Import-Module命令导入。我这里为: Import-Module C:\Users{用户名}.nuget\packages\microsoft.entityframeworkcore.tools{efcore版本号}\tools\EntityFrameworkCore.psd1
执行信息如下:

注意:如果还出错,就重启VS,Add-Migration Xxxx,Update-DataBase即可

你可能感兴趣的:(c#,asp.net,后端)