我有一个通用的库。NET核心3.1,在其中我创建了一个WEB API控制器,用于与多个应用程序共享。
为了将其添加到应用程序中,我期望这样(从3.0开始(:
services.AddControllers()
.PartManager.ApplicationParts.Add(new AssemblyPart(assembly));
然而,如果我只是引用公共项目,并调用services.AddControllers()
,则会自动添加控制器。。这有点诡异。显然,AddControllers((遍历了所有引用项目中的每个程序集,并愚蠢地添加了一路上找到的每个控制器。
我找不到关于这种行为的文件。我能看到的控制这一点的唯一方法是用控制器创建另一个项目,并在需要时引用它。
做这件事的正确(或打算(方式是什么?
我怀疑这样做的目的/正确方法是不将带有控制器的项目与其他带有控制器的工程进行引用(即使您引用的项目引用了带有控制器等的项目(
即,任何业务逻辑都应该在类似类库的东西中分别由两个web api引用。
如果你真的遇到了这种情况,解决办法如下:;
services.AddControllers().ConfigureApplicationPartManager(o =>
{
o.ApplicationParts.Clear();
o.ApplicationParts.Add(new AssemblyPart(typeof(Startup).Assembly));
});
Startup引用您所在的类的位置。
可能有一种稍微不同的处理方式。NET 6。