【问题标题】:ASP.NET Core - Controllers in referenced assembliesASP.NET Core - 引用程序集中的控制器
【发布时间】:2020-12-02 07:05:48
【问题描述】:

我有一个 .NET Core 3.1 的通用库,我在其中创建了一个用于与多个应用程序共享的 WEB API 控制器。

为了将它添加到应用程序中,我希望是这样的(从 3.0 开始):

services.AddControllers()
        .PartManager.ApplicationParts.Add(new AssemblyPart(assembly));

但是,如果我只是引用公共项目并调用services.AddControllers(),控制器会自动添加......这有点令人毛骨悚然。显然,AddControllers() 会遍历所有引用项目中的每个程序集,并且只是愚蠢地添加沿途找到的每个控制器。

我找不到有关此行为的文档。我能看到控制它的唯一方法是使用控制器创建另一个项目,并在需要时引用它。

这样做的正确(或预期)方式是什么?

【问题讨论】:

    标签: asp.net-core-webapi asp.net-core-3.1


    【解决方案1】:

    我怀疑这样做的预期/正确方法是不要将带有控制器的项目与其他带有控制器的项目一起引用(即使您引用的项目引用了带有控制器的项目等)。

    即任何业务逻辑都应该由两个 web api 分别在类库之类的东西中引用。

    如果您确实遇到这种情况,解决方法如下;

    services.AddControllers().ConfigureApplicationPartManager(o =>
                {
                    o.ApplicationParts.Clear();
                    o.ApplicationParts.Add(new AssemblyPart(typeof(Startup).Assembly));
                });
    

    Startup 在哪里引用你所在的类。

    在 .NET 6 中处理它的方式可能略有不同。

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2017-12-27
      相关资源
      最近更新 更多