我使用的是ASP.NET MVC Core RC-2。我有一个网络项目的目标是完整的.NET框架。我在解决方案中还有一个单独的类库,也是针对整个框架的。
在类库中,我有一个控制器,标有一个路由属性。我引用了web项目中的类库。此程序集引用nuget包Microsoft.AspNetCore.Mvc v. 1.0.0-rc2-final。
据我所知,此外部控制器将被自动发现,例如http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/
然而,这对我不起作用-我浏览到路由的URL,得到一个空白页面,它没有命中我的控制器断点。
你有什么办法让它工作吗?
有趣的是,它似乎确实适用于以.NET核心框架为目标的web项目,引用了一个同样以.NET核心为目标的类库。但不适用于以完整框架为目标的web项目,引用标准的.NET类库。
注意:这是MVC Core,它应该在没有任何MVC<=4 routing overrides的情况下支持这种场景。
发布于 2016-06-10 04:24:40
我相信您在RC2中遇到了以下已知问题。https://github.com/aspnet/Mvc/issues/4674 (bug中提到了解决方法)
从那时起,这个问题已经修复了,但只会在下一个版本中可用(除非你可以使用夜间构建)
发布于 2016-07-08 02:17:51
在ASP.Net Core1.0中仍然是一个问题,不确定它是否是设计出来的。最简单的解决方案是在Startup.cs/ConfigureServices中执行此操作
services.AddMvc()
.AddApplicationPart(typeof(<class in external assembly>).Assembly)
.AddControllersAsServices();AddApplicationPart在搜索控制器时显式包含程序集。对AddControllersAsServices()的调用会将所有发现的控制器添加到服务集合中,如果您在此行之后放置一个断点并检查“服务”,您将在集合中看到已找到的所有控制器类型。
您可能还想在这里检查:https://docs.asp.net/en/latest/migration/rc1-to-rtm.html#asp-net-5-mvc-compile-views,因为现在从RC1更改了控制器的发现规则。
另外,请记住使用IActionResult而不是ActionResult!
https://stackoverflow.com/questions/37725934
复制相似问题