使用包
替换工厂容器:
.Net5:
在Startup中以Parm方法的形式注入容器ContainerBuilder;
.Net6:
在注册服务时
builder.Host.UserServiceProviderFactory(New AutofacServiceProviderFactory());//以AutoFac为例。
builder.Host.ConfigureContainer(ContainerBuilder)
.Net5:
在Startup中以Parm方法的形式注入容器ContainerBuilder;
.Net6:
在注册服务时
builder.Host.UserServiceProviderFactory(New AutofacServiceProviderFactory());//以AutoFac为例。
builder.Host.ConfigureContainer(ContainerBuilder)
注册:
builder.Serivces.AddTransient< 抽象Service, XXXService>();//若注入IimplementationService,则注入参数类型应为抽象类。
注入:
-在Controller/Service构造器中将作为参数注入;
-也能在minimalApi里作为参数注入;
生命周期:
Transient
瞬时
builder.Serivces.AddTransient< Isever, sever>();
builder.Serivces.AddTransient(typeof(Isever),typeOf(sever));
Scoped
线程/作用域
类似会话。
builder.Serivces.AddScoped< Isever, sever>();
builder.Serivces.AddScoped(typeof(Isever),typeOf(sever));
Singleton
单例
可用在数据库、redis连接上。
builder.Serivces.AddSingleton< Isever, sever>();
builder.Serivces.AddSingleton(typeof(Isever),typeOf(sever));
builder.Serivces.AddSingleton<Isever>(Server sever));
注入方式:
.Net Core 3.1之前,需要手动在方法参数前添加参数才能实现RequestPayload反序列化。
特性 | 绑定源 |
---|---|
FromBody | 请求正文 |
FromForm | 表单数据 |
FromHeader | 请求标头 |
FromQuery | 请求查询字符串参数 |
FromRoute | 当前请求路由数据 |
FromServices | 作为操作参数插入的请求服务 |
后被[ApiController]特性完成。
若使用method(Type Parameter1, Type p2 );
则会获取 Request 中 Query String Parameter数据(Form表单),若需要获取Data内容应该创建model 并 method(modelClass model),则会json 反序列化Request Payload 成对象(这个转换在[Apicontroller]特性中完成)。
注册服务:
builder.Services.AddCors(options =>
{
options.AddPolicy
(
name:"Cors",
builder =>
{
builder.WithOrigins("*", "*", "*")
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
}
);
});
启用服务:
app.UseCors("Cors");
builder.Services.AddCors(c=>c.AddPolicy("any",p=>p.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()));
app.UseCors();
controller添加特性[EnableCors("any")]