我们试图将旧项目改写为asp.net核心mvc的旧mvc。我们以前附加了另一个mvc项目作为参考,并且可以毫无问题地调用控制器。但是在新的asp.net核心MVC上,它似乎还需要解决
因此webapplication9添加了webapplication1作为参考。并调用金丝雀,但返回404。它适用于旧的mvc。
控制器仅返回纯内容
namespace WebApplication1.Controllers
{
public class CanaryController : Controller
{
public IActionResult Index()
{
return Content("Canary");
}
}
}
是否需要添加一些部分以使webapplication9能够调用webapplication1控制器?
在旧的MVC 5上,我们只需在URL http://webapplication9/Canary上调用它即可。 在asp.net核心上,它返回404或找不到
答案 0 :(得分:1)
首先,您的其他项目不应是Web应用程序,而应是普通的PCL。
第二,在引用它之后,您需要告诉ASP.NET Core它应该在那寻找控制器。因此,Application Parts Api存在。
services.AddMvc()
.AddApplicationPart(typeof(CanaryController).GetTypeInfo().Assembly);
P.S。尽管文档指出应该开箱即用,但在控制器上进行集成测试/单元测试时,仍然需要.AddApplicationPart
,至少在ASP.NET Core 2.0中是这种情况