You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 9自托管Kestrel WinForms应用如何调用类库控制器?

解决方案

当控制器移到外部类库后,ASP.NET Core默认只会扫描启动程序集(你的WinForms项目)中的控制器,因此需要显式配置框架去扫描目标类库的程序集。修改MyWebAPI类的StartAsync方法即可解决问题:

修改后的StartAsync方法代码

public async Task StartAsync(int port)
{
    builder = WebApplication.CreateBuilder();

    builder.WebHost.ConfigureKestrel((context, serverOptions) =>
    {
        serverOptions.Listen(System.Net.IPAddress.Loopback, port);
    });

    // 添加控制器服务,并指定外部类库的程序集
    builder.Services.AddControllers()
        // 替换为你类库中任意一个控制器的完整类型
        .AddApplicationPart(typeof(MyRESTFulService.Controllers.YourController).Assembly);

    app = builder.Build();

    // 配置HTTP请求管道
    app.UseAuthorization();

    app.MapControllers();

    await app.StartAsync();
}

关键说明

  • AddApplicationPart方法用于告知ASP.NET Core MVC扫描额外的程序集,以此发现类库中的控制器。
  • 使用typeof(目标控制器类型).Assembly可以精准获取类库程序集,相比直接写程序集名称,能避免因名称变更导致的错误。
  • 确认WinForms项目已正确引用MyRESTFulService类库项目(你提到已配置依赖项,此步骤可忽略)。

内容的提问来源于stack exchange,提问作者ShamilS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:06:00