เส้นทางเริ่มต้นหลักของ Asp.net

ตัวย่อ Startup รหัส:

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

หลังจากรันแอปพลิเคชันใน Visual Studio 2015 ฉันเห็นในเบราว์เซอร์ "localhost:xxx" แต่ฉันไม่เห็นผลลัพธ์ของ MainController.Index() แค่หน้าว่าง.. ฉันพลาดอะไร?

อัปเดต:

เว็บ.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>

อัปเดต 2:

ปัญหามาจากข้อยกเว้นในบริการที่ฉีดขึ้นต่อกันไปยังคอนโทรลเลอร์ และเนื่องจากฉันลืมใช้ไซต์หน้าข้อยกเว้นของนักพัฒนา จึงส่งคืนหน้าว่างให้ฉัน ฉันขอโทษสำหรับคำถามที่ไม่ถูกต้อง แต่การกำหนดเส้นทางก็ใช้ได้ในกรณีของฉัน


person Kovpaev Alexey    schedule 20.10.2016    source แหล่งที่มา
comment
ตรวจสอบคำตอบของฉันและบอกฉันว่าช่วยคุณได้หรือไม่!   -  person mybirthname    schedule 20.10.2016


คำตอบ (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?}");

นี่เป็นสองวิธีในการกำหนดเส้นทางเริ่มต้น คุณกำลังผสมพวกมัน คุณต้องกำหนดเทมเพลตเสมอ วิธีที่ 2 คุณสามารถเขียนค่าเริ่มต้นลงในเทมเพลตได้โดยตรง

person mybirthname    schedule 20.10.2016
comment
สิ่งนี้ไม่ได้ช่วยฉันเลย ฉันยังคงค้นพบปัญหานี้อยู่ หลังจากการเปลี่ยนแปลงบางส่วน ส่วน mvc ทั้งหมดก็หยุดทำงาน และฉันสามารถรับได้เฉพาะทรัพยากรแบบคงที่ เช่น ไฟล์ css และรูปภาพ - person Kovpaev Alexey; 20.10.2016
comment
@KovpaevAlexey docs.asp.net/en/latest/fundamentals/routing.html ตรวจสอบ URL นี้ นี่เป็นพื้นฐานเกี่ยวกับการกำหนดเส้นทางใน .net core - person mybirthname; 20.10.2016
comment
ปัญหามาจากข้อยกเว้นในบริการที่ฉีดขึ้นต่อกันไปยังคอนโทรลเลอร์ และเนื่องจากฉันลืมใช้ไซต์หน้าข้อยกเว้นของนักพัฒนา จึงส่งคืนหน้าว่างให้ฉัน ฉันขอโทษสำหรับคำถามที่ไม่ถูกต้อง แต่การกำหนดเส้นทางก็ใช้ได้ในกรณีของฉัน - person Kovpaev Alexey; 21.10.2016
comment
@KovpaevAlexey ดีที่ทุกอย่างใช้งานได้ คุณสามารถทำเครื่องหมายคำถามให้ถูกต้องได้หากต้องการ - person mybirthname; 21.10.2016

วิธีที่ง่ายที่สุดสำหรับฉัน (และไม่ต้องใช้ MVC) คือการตั้งค่าคอนโทรลเลอร์เป็นเส้นทางเริ่มต้นโดยใช้แอตทริบิวต์ custum [Route("")] ที่ว่างเปล่าดังนี้:

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

ด้วย Startup.Configure

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

สำหรับคุณทุกคนที่ได้รับหน้าว่าง ให้ตั้งค่า PreserveCompilationContext เป็นจริง:

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

ใน csproj ใน vs 2017 หรือ

"buildOptions": {   "preserveCompilationContext": true }

ใน project.json

person sensei    schedule 10.05.2017

ในคลาส Startup.cs ให้ใช้วิธีการที่สะดวก: UseMvcWithDefaultRoute():

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

สามารถใช้ในการเปลี่ยนแปลง:


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

ข้อมูลเพิ่มเติมในเอกสารประกอบของ Microsoft

person Wedson Quintanilha da Silva    schedule 31.01.2019