web-dev-qa-db-fra.com

Asp.net core default route

Code Startup simplifié:

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" });
    });
}

Après avoir exécuté l'application dans Visual Studio 2015, je vois dans le navigateur "localhost: xxx", mais je ne vois pas le résultat de MainController.Index (). Juste une page blanche. Qu'est-ce que j'ai raté?

Mettre à jour:

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>

Mise à jour 2:

Le problème vient d'une exception dans le service de dépendance injecté au contrôleur et parce que j'oublie d'utiliser un site de page d'exception de développeur, je viens de me retourner une page vierge. Donc, je suis désolé pour la question incorrecte, mais le routage est bien dans mon cas.

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

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

Ce sont les deux façons de définir la route par défaut. Vous les mélangez. Vous devez toujours définir un modèle. De la deuxième manière, vous pouvez écrire les valeurs par défaut directement dans le modèle.

9
mybirthname

Dans la classe Startup.cs, utilisez une méthode pratique: UseMvcWithDefaultRoute ():

public void Configure(IApplicationBuilder app, IHostingEnvironment 
{
   app.UseMvcWithDefaultRoute();
}

Peut être utilisé pour changer:


public void Configure(IApplicationBuilder app, IHostingEnvironment 
{
   app.UseMvc(routes =>
   {
      routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
   });
}

Plus d'informations dans Documentation Microsoft

Pour tous ceux qui obtiennent une page vierge, définissez PreserveCompilationContext sur true:

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

dans csproj en vs 2017 ou

"buildOptions": {   "preserveCompilationContext": true }

dans project.json

0
sensei