如何覆盖AbpUserConfigurationController?

时间:2018-08-14 11:52:59

标签: asp.net-core aspnetboilerplate

我不知道AbpUserConfigurationController的基本原理吗?它如何注入到aspnet core DI容器中?为什么在Swagger页面上看不到它?我正在使用aspnetboilerplate高级启动模板。

1 个答案:

答案 0 :(得分:0)

要覆盖AbpUserConfigurationController

您可以使用aspnetboilerplate/#3296(comment)

中提到的方法

了解Abp如何将控制器注入AspNetCore项目

@tseng进行了解释,可以通过AddApplicationPart中的ApplicationPartManager添加控制器。

Abp在某些地方使用ApplicationPartManager来包含其他控制器。

  1. @tsengAbpAspNetCoreModule#L47-78Abp.AspNetCore中,此处的实现包括在Abp.AspNetCore程序集中创建的Controller。

  2. 在下载的模板中,您可以在*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装饰的(属性路由