|
@@ -165,16 +165,17 @@ namespace DW5S.WebApi
|
|
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
|
|
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
|
|
var hostBuilder = builder.Host.ConfigureContainer<Autofac.ContainerBuilder>(builder =>
|
|
var hostBuilder = builder.Host.ConfigureContainer<Autofac.ContainerBuilder>(builder =>
|
|
{
|
|
{
|
|
|
|
+ //注入Serilog日志对象
|
|
|
|
+ builder.Register((c, p) => Serilog.Log.Logger).SingleInstance();
|
|
|
|
+
|
|
//瞬态注入Controllerer,每次接口请求都创建了新的对象
|
|
//瞬态注入Controllerer,每次接口请求都创建了新的对象
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
.Where(type => type.Name.EndsWith("Controller"))
|
|
.Where(type => type.Name.EndsWith("Controller"))
|
|
.PropertiesAutowired((propInfo, instance) =>//Controller中的属性支持自动注入
|
|
.PropertiesAutowired((propInfo, instance) =>//Controller中的属性支持自动注入
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
- propInfo.GetCustomAttribute<AutowiredAttribute>() != null)//带有Autowired特性的属性自动注入
|
|
|
|
- .AsSelf()//接口的默认实现
|
|
|
|
- .InstancePerDependency();
|
|
|
|
|
|
+ propInfo.GetCustomAttribute<AutowiredAttribute>() != null);//带有Autowired特性的属性自动注入
|
|
|
|
|
|
- //单例注入以Service或Repository结尾的类(有继承的类不会注入)
|
|
|
|
|
|
+ //Scop注入以Service或Repository结尾的类(有继承的类不会注入)
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
.Where(type =>
|
|
.Where(type =>
|
|
{
|
|
{
|
|
@@ -192,16 +193,16 @@ namespace DW5S.WebApi
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
propInfo.GetCustomAttribute<AutowiredAttribute>() != null)//带有Autowired特性的属性自动注入
|
|
propInfo.GetCustomAttribute<AutowiredAttribute>() != null)//带有Autowired特性的属性自动注入
|
|
.AsSelf()//接口的默认实现
|
|
.AsSelf()//接口的默认实现
|
|
- .SingleInstance();
|
|
|
|
|
|
+ .InstancePerLifetimeScope();
|
|
|
|
|
|
- //注入后台服务
|
|
|
|
|
|
+ //注入BackgroundService后台服务
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
builder.RegisterAssemblyTypes(assemblies)
|
|
.Where(type => type.Name.EndsWith("Service") && type.IsSubclassOf(typeof(BackgroundService)))
|
|
.Where(type => type.Name.EndsWith("Service") && type.IsSubclassOf(typeof(BackgroundService)))
|
|
.PropertiesAutowired((propInfo, instance) =>//BackgroundService类中的属性支持自动注入
|
|
.PropertiesAutowired((propInfo, instance) =>//BackgroundService类中的属性支持自动注入
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
propInfo.Name.EndsWith("Autowired") || //以Autowired名称结尾的属性自动注入
|
|
propInfo.GetCustomAttribute<AutowiredAttribute>() != null)//带有Autowired特性的属性自动注入
|
|
propInfo.GetCustomAttribute<AutowiredAttribute>() != null)//带有Autowired特性的属性自动注入
|
|
.As<IHostedService>()//后台服务方式注入
|
|
.As<IHostedService>()//后台服务方式注入
|
|
- .InstancePerDependency();
|
|
|
|
|
|
+ .SingleInstance();
|
|
});
|
|
});
|
|
#endregion
|
|
#endregion
|
|
#region 注入HostedService后台服务(已屏蔽,在后面使用了autofac自动注入)
|
|
#region 注入HostedService后台服务(已屏蔽,在后面使用了autofac自动注入)
|
|
@@ -231,6 +232,7 @@ namespace DW5S.WebApi
|
|
options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
|
|
options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
|
|
});
|
|
});
|
|
var app = builder.Build();
|
|
var app = builder.Build();
|
|
|
|
+ var container = app.Services.GetAutofacRoot();//autofac容器
|
|
#region 启用静态资源访问
|
|
#region 启用静态资源访问
|
|
foreach (var item in staticDir)
|
|
foreach (var item in staticDir)
|
|
{
|
|
{
|
|
@@ -280,7 +282,8 @@ namespace DW5S.WebApi
|
|
//app.UseMiddleware<ExceptionHandlingMiddleware>();//全局异常处理
|
|
//app.UseMiddleware<ExceptionHandlingMiddleware>();//全局异常处理
|
|
app.MapControllers();
|
|
app.MapControllers();
|
|
//app.Map("/", () => "必须通过GRPC客户端访问此接口");
|
|
//app.Map("/", () => "必须通过GRPC客户端访问此接口");
|
|
- app.RunAsync(_cts.Token);
|
|
|
|
|
|
+ //app.RunAsync(_cts.Token);
|
|
|
|
+ app.Run();
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|