Dav*_*ney 8 .net-core asp.net-core
我有一个 ASP.NET Core API,它引用一个包含Controller
.
默认情况下,该控制器已注册并可以响应请求。但是,我只想在某些情况下添加它 - 例如,如果它在 DEV 环境中。
我的Startup
看起来像这样:
services.AddControllers()
.AddMvcOptions(cfg => {
cfg.Filters.Add(new CustomExceptionFilterAttribute())
});
Run Code Online (Sandbox Code Playgroud)
我预计我需要在调用注册此控制器AddApplicationPart(typeof(ClassInPackage).Assembly)
后调用?AddCointrollers
有人可以建议我启用/禁用该控制器的注册的方法吗?
好的,我找到了一个解决方案 - 删除ApplicationPart
包含Controller
. 程序集中的任何其他依赖项仍然可以使用。
在 Startup.cs 中/无论你在哪里进行 IoC:
if(hideControllerFromOtherAssembly)
{
var appPartManager = (ApplicationPartManager)services.FirstOrDefault(a => a.ServiceType == typeof(ApplicationPartManager)).ImplementationInstance;
var mockingPart = appPartManager.ApplicationParts.FirstOrDefault(a => a.Name == "MyMockLibrary.Namespace");
if(mockingPart != null)
{
appPartManager.ApplicationParts.Remove(mockingPart);
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以ApplicationParts
通过扩展方法进行操作:
AddMvc().ConfigureApplicationPartManager()
Run Code Online (Sandbox Code Playgroud)
这不适合我,因为我在 nuget 包中编写了一个扩展方法
https://learn.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-5.0
归档时间: |
|
查看次数: |
3866 次 |
最近记录: |