Rute default inti Asp.net

Kode Startup yang disederhanakan:

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

Setelah menjalankan aplikasi di Visual Studio 2015 saya melihat di browser "localhost:xxx", tetapi saya tidak melihat hasil MainController.Index(). Hanya halaman kosong. Apa yang saya lewatkan?

Pembaruan:

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>

Pembaruan 2:

Masalahnya berasal dari pengecualian dalam layanan yang disuntikkan ketergantungan ke pengontrol dan karena saya lupa menggunakan halaman pengecualian pengembang, situs baru saja mengembalikan halaman kosong kepada saya. Jadi saya minta maaf atas pertanyaan yang salah, tetapi perutean baik-baik saja dalam kasus saya.


person Kovpaev Alexey    schedule 20.10.2016    source sumber
comment
Periksa jawaban saya dan beri tahu saya jika membantu Anda!   -  person mybirthname    schedule 20.10.2016


Jawaban (4)


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

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

Ini adalah dua cara untuk menentukan rute default. Anda mencampurkannya. Anda harus selalu menentukan template. Dengan cara kedua Anda dapat menulis defaultnya langsung di template.

person mybirthname    schedule 20.10.2016
comment
Semua ini tidak membantu saya. Saya masih menemukan masalah ini. Setelah beberapa perubahan, seluruh bagian mvc berhenti berfungsi dan saya hanya bisa mendapatkan sumber daya statis seperti file dan gambar css. - person Kovpaev Alexey; 20.10.2016
comment
@KovpaevAlexey docs.asp.net/en/latest/fundamentals/routing.html periksa url ini. Ini adalah dasar-dasar tentang perutean di .net core. - person mybirthname; 20.10.2016
comment
Masalahnya berasal dari pengecualian dalam layanan yang disuntikkan ketergantungan ke pengontrol dan karena saya lupa menggunakan halaman pengecualian pengembang, situs baru saja mengembalikan halaman kosong kepada saya. Jadi saya minta maaf atas pertanyaan yang salah, tetapi perutean baik-baik saja dalam kasus saya. - person Kovpaev Alexey; 21.10.2016
comment
@KovpaevAlexey bagus karena semuanya berfungsi, Anda dapat menandai pertanyaan dengan benar jika Anda mau. - person mybirthname; 21.10.2016

Cara termudah bagi saya (dan tanpa menggunakan MVC) adalah mengatur pengontrol ke rute default menggunakan atribut khusus [Route("")] kosong seperti:

[ApiController]
[Route("")]
[Route("[controller]")]
public class MainController : ControllerBase
{ ... }

dengan Startup.Configure

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});
person EladTal    schedule 01.04.2020

Untuk Anda semua yang mendapatkan halaman kosong, setel PreserveCompilationContext ke true:

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

di csproj pada vs 2017 atau

"buildOptions": {   "preserveCompilationContext": true }

di proyek.json

person sensei    schedule 10.05.2017

Di kelas Startup.cs, gunakan Metode praktis: UseMvcWithDefaultRoute():

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

Dapat digunakan untuk mengubah:


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

Info selengkapnya di dokumentasi Microsoft

person Wedson Quintanilha da Silva    schedule 31.01.2019