我在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}
,但您的方法称为'详细信息'。另外,您的"创建方法"不会映射到任何路线...