route net mvc httpget attribute asp c# .net routing asp.net-core

c# - mvc - route asp.net core



Ruta por defecto del nĂșcleo de Asp.net (2)

Para todos los que obtengan una página en blanco, establezca PreserveCompilationContext en verdadero:

<PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> <PreserveCompilationContext>true</PreserveCompilationContext> </PropertyGroup>

en csproj en vs 2017 o

"buildOptions": { "preserveCompilationContext": true }

en project.json

Código de Startup simplificado:

public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseMvc(routes => { routes.MapRoute( name: "default", template: "", defaults: new { controller = "Main", action = "Index" }); }); }

Después de ejecutar la aplicación en Visual Studio 2015, veo en el navegador "localhost: xxx", pero no veo el resultado de MainController.Index (). Solo página en blanco ¿Qué me perdí?

Actualizar:

Web.config:

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> </handlers> <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile="./logs/stdout" forwardWindowsAuthToken="false"/> </system.webServer> </configuration>

Actualización 2:

El problema proviene de la excepción en el servicio inyectado de dependencia al controlador y porque olvidé usar el sitio de la página de excepción del desarrollador que me acaba de devolver la página en blanco. Entonces, lamento la pregunta incorrecta, pero el enrutamiento está bien en mi caso.


routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new { controller = "Main", action = "Index" }); routes.MapRoute( name: "default", template: "{controller=Main}/{action=Index}/{id?}");

Estas son las dos formas de definir la ruta predeterminada. Los estás mezclando. Siempre necesita definir una plantilla. En la segunda forma, puede escribir los valores predeterminados directamente en la plantilla.