wake-up-neo.com

Asp.net-Standardroute

Vereinfachter Startup-Code:

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

Nach dem Ausführen der Anwendung in Visual Studio 2015 sehe ich im Browser "localhost: xxx", aber ich sehe kein Ergebnis von MainController.Index (). Nur leere Seite. Was habe ich verpasst?

Update:

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>

Update 2:

Das Problem rührt von einer Ausnahme im Abhängigkeitseingabedienst zum Controller und weil ich vergessen habe, die Entwickler-Ausnahmeseiten-Site zu verwenden, hat mir gerade eine leere Seite zurückgegeben. Ich entschuldige mich für eine falsche Frage, aber das Routing ist in meinem Fall in Ordnung.

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

So definieren Sie die Standardroute auf zwei Arten. Sie mischen sie. Sie müssen immer eine Vorlage definieren. Zweitens können Sie die Standardwerte direkt in die Vorlage schreiben.

9
mybirthname

Verwenden Sie in der Klasse Startup.cs eine praktische Methode: UseMvcWithDefaultRoute ():

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

Kann zum Ändern verwendet werden:


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

Weitere Informationen in Microsoft-Dokumentation

Für alle, die eine leere Seite erhalten, setzen Sie PreserveCompilationContext auf true:

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

in csproj in vs 2017 oder

"buildOptions": {   "preserveCompilationContext": true }

in project.json

0
sensei