Net Core 2无法加载资源:服务器以404的状态响应(找不到)



我在Google Cloud Platform上使用ASP.NET构建应用程序。NET CORE 2.0 MVC模式

我使用两个区域和一个项目的一个homecontrollre

的根源

这是一个cliniccontrollel.cs类

using System.Collections.Generic;
using System.Data.Common;
using System.Threading.Tasks;
using GcpProject_AspNet.Areas.Clinic.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace GcpProject_AspNet.Areas.Clinic.Controllers
{
    [Area("Clinic")]
    [Route("admin/[controller]")]
    //[Route("[controller]")]
    //[Authorize]
    public class ClinicController : Controller
    {
        private readonly ILogger _logger;
        private readonly DbConnection _connection;
        private const int _pageSize = 10;

        public ClinicController( DbConnection connection , Microsoft.Extensions.Logging.ILogger<ClinicController> logger1)
        {
            _logger = logger1;
            _connection = connection;
            if (_connection.State == System.Data.ConnectionState.Closed)
                _connection.Open();
            //User.Identities.g
        }
        [Route("{page:int?}")]
        [HttpGet("index")]
        public async Task<IActionResult> Index(string userAgent, string nextPageToken)
        {
            if (string.IsNullOrEmpty(userAgent))
            {
                userAgent = Request.Headers["User-Agent"];
            }
            using (var LookUpcommand = _connection.CreateCommand())
            {
                LookUpcommand.CommandText = @"SELECT * FROM Clinics";
                List<string> line = new List<string>();
                var reader = await LookUpcommand.ExecuteReaderAsync();
                ClinicModel clinicModel = new ClinicModel()
                {
                    ClinicView = new List<ClinicEntry>()
                };
                List<ClinicEntry> lst = new List<ClinicEntry>();

                while (await reader.ReadAsync())
                {
                    //clinicModel.ClinicView.Add(new ClinicEntry()
                    lst.Add(new ClinicEntry()
                    {
                        Clinic_Address = reader.GetString(5),
                        Clinic_Name = reader.GetString(1),
                        Phone = reader.GetString(2),
                        MobilePhone = reader.GetString(3),
                        E_Mail_Address = reader.GetString(4),
                        ClinicId = reader.GetInt32(0)
                    });
                    clinicModel.ClinicView = lst.ToArray();
                }

                _logger.LogInformation("Home page hit!");
                _connection.Close();
                return View(clinicModel);
            }
        }
        [HttpGet("Details/{id}")]
        public ActionResult Details(long?id)
        {
            return View();
        }
        [HttpGet("Create/{id}")]
        public IActionResult Create()
        {
            return View();
        }
    }
}

方法index() - 工作正确创建的其他方法,详细信息在应用程序呼叫方法详细信息的地方我在Explorer中看到"空白页"如果我在部分网络消息中按F12出现F12,则会出现"无法加载资源:服务器响应的状态为404(未找到)"。我无法在方法创建()和详细信息()中设置断点。

文件starup.cs

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Only use Console and Debug logging during development.
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
      //  app.UseExceptionHandler("Clinic/Error");
        app.UseGoogleExceptionLogging();
        // Send logs to Stackdriver Logging.
        loggerFactory.AddGoogle(GetProjectId());
    }
   // app.UseAuthentication();
    app.UseStaticFiles();
    app.UseGoogleTrace();
    app.UseMvc(routes =>
    {
        routes.MapRoute("areaAccount", "{area:exists}/{controller=Account}/{action=index}/{id}");
        routes.MapRoute("areaClinicIndex", "{area:exists}/{controller=Clinic}/{action=Index}/{id}");
        routes.MapRoute("areaClinicDetails", "{area:exists}/{controller=Clinic}/{action=Delails}/{id}");
        // for first controller   
        routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}");
     // routes.MapRoute(name:"default",template: "{controller=ApplicationRole}/{action=Index}/{id?}");
    });
}

什么是问题?在Chrome http://localhost中:61878/admin/clinic/index-正确并正常工作。在哪里选择一个项目之一,我可以看到http://localhost:61878/clinic/delect/1

详细信息操作的路由是错误的。另外,没有创建动作的途径。您在StartUp.cs文件中的路线应该是这样的:

app.UseMvc(routes =>
{
    routes.MapRoute("areaAccount", "{area:exists}/{controller=Account}/{action=index}/{id}");
    routes.MapRoute("areaClinicIndex", "{area:exists}/{controller=Clinic}/{action=Index}/{id}");
    routes.MapRoute("areaClinicDetails", "{area:exists}/{controller=Clinic}/{action=Details}/{id}");
    routes.MapRoute("areaClinicDetails", "{area:exists}/{controller=Clinic}/{action=Create}/{id}");
    // for first controller   
    routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}");
    // routes.MapRoute(name:"default",template: "{controller=ApplicationRole}/{action=Index}/{id?}")
});

,但我真的不建议您使用路线。

您的routes.MapRoute指向{action=Delails},但您的方法称为'详细信息'。另外,您的"创建方法"不会映射到任何路线...

最新更新