我不知道AbpUserConfigurationController的基本原理吗?它如何注入到aspnet core DI容器中?为什么在Swagger页面上看不到它?我正在使用aspnetboilerplate高级启动模板。
答案 0 :(得分:0)
要覆盖AbpUserConfigurationController
您可以使用aspnetboilerplate/#3296(comment)
中提到的方法了解Abp如何将控制器注入AspNetCore项目
@tseng进行了解释,可以通过AddApplicationPart
中的ApplicationPartManager
添加控制器。
Abp在某些地方使用ApplicationPartManager
来包含其他控制器。
在@tseng在AbpAspNetCoreModule#L47-78的Abp.AspNetCore
中,此处的实现包括在Abp.AspNetCore
程序集中创建的Controller。
在下载的模板中,您可以在*WebCoreModule.cs
项目下查找*.*.Web.Core
。以下代码段是Abp将MyProjectApplicationModule
程序集中的所有应用程序服务转换为控制器的另一个地方。
Configuration.Modules.AbpAspNetCore()
.CreateControllersForAppServices(
typeof(MyProjectApplicationModule).GetAssembly()
);
您还可以查看AbpAspNetCoreConfiguration.cs#L47-L55,其中ControllerAssemblySettings
的更新。
请注意,在CreateControllersForAppServices
的{{1}}中调用了PreInitialize()
,在AbpModule
的{{1}}中调用了AddApplicationParts
。
因此,PostInitialize()
的方法AbpAspNetCoreModule
中使用的ControllerAssemblySettings
已经包含了所有要通过AddApplicationParts
添加的控制器
了解为什么AbpAspNetCoreModule
没有出现在swagger-ui中
简而言之,ApplicationPartManager
不支持常规路由,请参见swashbuckle-apiexplorer-and-routing。
AbpUserConfigurationController
出现在Swagger
中,因为它是用TokenAuthController
装饰的(属性路由)