asp.net5.0项目的创建常用的配置
asp.net5.0项目
1.autofac:引用Autofac.Extensions.DependencyInjection
program:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());
stateup:
public void ConfigureContainer(ContainerBuilder builder)
{
var assemblysServices = Assembly.Load("Show.Repository");
var assemblysServices1 = Assembly.Load("Show.Service");
builder.RegisterAssemblyTypes(assemblysServices, assemblysServices1).AsImplementedInterfaces().InstancePerLifetimeScope();
}
2.autoMapper:引用AutoMapper.Extensions.Microsoft.DependencyInjection
stateup:
services.AddAutoMapper(x =>x.CreateMap<Depatment, DepatmentDto>());
services.AddAutoMapper(x =>x.CreateMap<DeptRoleDto, DeptRole>());
repository:
mapper.Map<DeptRole>(deptRoleDto);
or
DB.Depatment.ProjectTo<DepatmentDto>(mapper.ConfigurationProvider).ToList();
3.自引用循环:引用Microsoft.AspNetCore.Mvc.NewtonsoftJson
services.AddControllers().AddNewtonsoftJson(options =>
{
//自引用循环
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
//json数据的时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
//大小写
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
4.jwt
引用:Microsoft.AspNetCore.Authentication.JwtBearer
应用Jwt
var authClaims = new List<Claim> {
new Claim(JwtClaimTypes.Id,result.Assess)
};
IdentityModelEventSource.ShowPII = true;
//签名秘钥 可以放到json文件中
var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtConfig:Key"]));
var token = new JwtSecurityToken(
issuer: configuration["JwtConfig:Issuer"],
audience: configuration["JwtConfig:Audienc"],
expires: DateTime.Now.AddHours(10),
claims: authClaims,
signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256));
var handler = new JwtSecurityTokenHandler().WriteToken(token);
return new MessageDto() { code = 0, Message = handler };
Api:
using Microsoft.AspNetCore.Authorization;
[Authorize]
SetUp配置:
//jwt
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.SaveToken = true;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtConfig:Key"])),
ValidAudience = Configuration["JwtConfig:Audienc"],
ValidIssuer = Configuration["JwtConfig:Issuer"],
ValidateLifetime = true,//验证生命周期
RequireExpirationTime = true,//过期时间
ClockSkew = TimeSpan.Zero
};
});
中间件:
app.UseAuthentication();

浙公网安备 33010602011771号