Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core mvc ASP.NET核心MVC控制器位于单独的程序集中_Asp.net Core Mvc_Asp.net Core 1.0 - Fatal编程技术网

Asp.net core mvc ASP.NET核心MVC控制器位于单独的程序集中

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,得到一个空白页面,它没有击中我的控制器断点 有什么办法让它工作吗 有趣的是,它似乎确实适

我正在使用ASP.NETMVC核心RC-2。我有一个针对整个.NET框架的web项目。我在解决方案中还有一个单独的类库,也针对完整的框架

在类库中,我有一个控制器,用route属性标记。我从web项目中引用了类库。此程序集引用nuget包
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”)现在必须是设计好的,在事后打开它会很可怕。做了同样的事情,但没有成功引入一个特定的控制器,而不将它们全部引入另一个程序集中?