分类 .Net Core 下的文章

替换工厂容器:

.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]特性中完成)。

BackEnd

DotNet Core 6

  1. 安装Nuget包Cors;
  2. 注册服务:

    builder.Services.AddCors(options =>
    {
        options.AddPolicy
        (
            name:"Cors",
            builder =>
            {
                builder.WithOrigins("*", "*", "*")
                .AllowAnyOrigin()
                .AllowAnyHeader()
                .AllowAnyMethod();
            }
    
         );
    });
  3. 启用服务:

    app.UseCors("Cors");
    

builder.Services.AddCors(c=>c.AddPolicy("any",p=>p.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()));
app.UseCors();
controller添加特性[EnableCors("any")]