【发布时间】:2021-12-16 17:51:13
【问题描述】:
我有这个带有 HTTPPost 方法的类:
公共类 MyController : ControllerBase { 私有只读 ILog _logger;
public MyController(ILog logger)
{
this._logger = logger;
}
[Route("api/route/{Id}/Start")]
[HttpPost]
public async Task<IActionResult> Start(string Id)
{
...
在 BootStrap 类中,我想调用 Start 方法。我该怎么做?:
IServiceContainer _serviceContainer;
public MyBootstrapper(IServiceContainer container)
{
container.RegisterConstructorDependency<ILog>((factory, info) => new InfoLogger(info.Member.DeclaringType));
}
public async Task RunAsync()
{
await RegisterServicesAsync();
}
protected static async Task RegisterServicesAsync()
{
IServiceContainer container = new ServiceContainer();
container.Register<MyController>();
using (container.BeginScope())
{
//I must call here?
我想做的是从控制台应用程序调用 My Method:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
Bootstrapper.RunAsync().Wait();
在 Bootrapper 中调用我在不同服务中的方法。
【问题讨论】:
-
这似乎几乎肯定是错误的方式去做任何你想做的事情。你能澄清一下实际目标是什么吗?
-
你在这里的意图是什么?在 .net 核心中,您通常在 StartUp 类中注册所有内容。在您的 Startup 类中,您可以调用 Bootstrap 类。您可以尝试将(此 IServiceContainer 容器)添加到您的方法签名中,以便您可以从启动类中调用它。
-
我想通过我的 Web API 进行测试。
-
啊好吧。尝试使用起订量。这是一种为单元测试伪造注入的绝妙方法。对于集成测试,请看这里...docs.microsoft.com/en-us/aspnet/core/test/…
标签: c# .net-core asp.net-web-api constructor