Asp.net core mvc ASP.NET核心MVC控制器位于单独的程序集中
我正在使用ASP.NETMVC核心RC-2。我有一个针对整个.NET框架的web项目。我在解决方案中还有一个单独的类库,也针对完整的框架 在类库中,我有一个控制器,用route属性标记。我从web项目中引用了类库。此程序集引用nuget包Asp.net core mvc ASP.NET核心MVC控制器位于单独的程序集中,asp.net-core-mvc,asp.net-core-1.0,Asp.net Core Mvc,Asp.net Core 1.0,我正在使用ASP.NETMVC核心RC-2。我有一个针对整个.NET框架的web项目。我在解决方案中还有一个单独的类库,也针对完整的框架 在类库中,我有一个控制器,用route属性标记。我从web项目中引用了类库。此程序集引用nuget包Microsoft.AspNetCore.Mvc v。1.0.0-rc2-final 据我所知,该外部控制器将自动发现,例如。 然而,这对我不起作用-我浏览到路由的URL,得到一个空白页面,它没有击中我的控制器断点 有什么办法让它工作吗 有趣的是,它似乎确实适
Microsoft.AspNetCore.Mvc v。1.0.0-rc2-final
据我所知,该外部控制器将自动发现,例如。
然而,这对我不起作用-我浏览到路由的URL,得到一个空白页面,它没有击中我的控制器断点
有什么办法让它工作吗
有趣的是,它似乎确实适用于以.NETCore框架为目标的web项目,引用同样以.NETCore为目标的类库。但对于以完整框架为目标的web项目,引用标准的.NET类库则不适用
注意:这是MVC核心,它应该在没有任何MVC的情况下支持这种场景我相信您在RC2中遇到了以下已知问题。 (bug中提到了解决方法)
从那时起,这个问题就已经解决了,但只会在下一个版本中提供(除非您同意使用夜间版本)在ASP.Net Core 1.0中仍然是一个问题,不确定它是否是现在设计的。最简单的解决方案是在Startup.cs/ConfigureServices中执行此操作
services.AddMvc()
.AddApplicationPart(typeof(<class in external assembly>).Assembly)
.AddControllersAsServices();
services.AddMvc()
.AddApplicationPart(typeof().Assembly)
.addControllerAsservices();
AddApplicationPart在搜索控制器时显式包含程序集。
调用AddControllerAsservices()会将所有发现的控制器添加到服务集合中,如果您在此行后放置断点并检查“服务”,您将在集合中看到所有已找到的控制器类型
您可能还想在这里检查:因为现在已更改了RC1中控制器的发现规则
还记得使用IActionResult而不是ActionResult 这可能是MVC Core的副本-全新的ASP.NET StackforMe,仅使用
。AddApplicationPart(typeof().Assembly)
就足够了。您也可以改用另一行:.AddApplicationPart(Assembly.Load(“ExternalAssemblyName”)代码>现在必须是设计好的,在事后打开它会很可怕。做了同样的事情,但没有成功引入一个特定的控制器,而不将它们全部引入另一个程序集中?