tutorial tag route que paginas pages page net mvc for asp asp.net-core-mvc asp.net-core-1.0

asp.net-core-mvc - tag - select asp-for asp-items



Controladores ASP.NET Core MVC en ensamblaje separado (2)

Estoy usando ASP.NET MVC Core RC-2. Tengo un proyecto web dirigido a todo el framework .NET. También tengo una biblioteca de clases separada en la solución, que también apunta al marco completo.

En la biblioteca de clases, tengo un controlador, marcado con un atributo de ruta. Me he referido a la biblioteca de clases del proyecto web. Este conjunto hace referencia al paquete nuget Microsoft.AspNetCore.Mvc v. 1.0.0-rc2-final .

Tenía entendido que este controlador externo se descubriría automáticamente, por ejemplo, http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/

Sin embargo, esto no funciona para mí: navego hasta la URL de la ruta y obtengo una página en blanco y no llega al punto de interrupción del controlador.

¿Alguna idea de cómo hacer que esto funcione?

Curiosamente, parece funcionar para proyectos web dirigidos a .NET Core Framework, haciendo referencia a una biblioteca de clases que también está orientada a .NET Core. Pero no para un proyecto web dirigido a todo el marco, haciendo referencia a una biblioteca de clases estándar .NET.

Nota: este es MVC Core, que se supone que es compatible con este tipo de escenario sin ninguna excepción de enrutamiento de MVC <= 4 .


Creo que estás golpeando el siguiente problema conocido en RC2. https://github.com/aspnet/Mvc/issues/4674 (la solución se menciona en el error)

Esto se ha solucionado desde entonces, pero solo estará disponible en la próxima versión (a menos que esté de acuerdo con el uso de compilaciones nocturnas)


Sigue siendo un problema en ASP.Net Core 1.0, no estoy seguro si es por diseño ahora. La solución más sencilla es hacer esto en Startup.cs / ConfigureServices

services.AddMvc() .AddApplicationPart(typeof(<class in external assembly>).Assembly) .AddControllersAsServices();

AddApplicationPart incluye explícitamente el ensamblaje en las búsquedas de controladores. La llamada a AddControllersAsServices () agregará todos los controladores descubiertos en la colección de servicios, y si coloca un punto de interrupción después de esta línea e inspecciona ''servicios'', verá en la colección todos los tipos de controladores que se han encontrado.

También puede consultar aquí: https://docs.asp.net/en/latest/migration/rc1-to-rtm.html#asp-net-5-mvc-compile-views ya que las reglas de descubrimiento ahora están cambiadas Para los controladores de RC1.

¡También recuerda usar IActionResult en lugar de ActionResult!