Вопрос или проблема
Я недавно создал новый aspsettings.json, удалив aspsettings..json, чтобы исправить имя файла и устранить ошибку. У меня есть два контроллера: Home и Employees.
Сейчас, когда я запускаю страницу Index, она говорит,
Эта страница localhost не найдена – веб-страница не найдена по этому веб-адресу.
Пожалуйста, посмотрите мой код контроллера Home для Index ниже,
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
return View("Index");
}
public IActionResult Privacy()
{
return View();
}
Код appsettings.json приведен ниже,
{
"ConnectionStrings": {
"DefaultConnection": ";Database={Employees};User Id={Ammadlogin};Password={ammadpass1}Trust Server Certificate=True;"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
Пожалуйста, посмотрите код Program.cs ниже,
using Microsoft.EntityFrameworkCore;
namespace Employeeproject
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Run();
// Add services to the container.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddControllersWithViews();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
}
}
}
Я попытался увидеть контроллер, функциональность Index есть. Контроллер Home и страница index также указаны в Program.cs. Значит, маршрут правильный.
Я думаю, проблема в том, что app.Run()
вызывается рано в файле Program.cs, что мешает применению остальной конфигурации промежуточного ПО (включая маршрутизацию). Также проверьте, чтобы представление находилось по правильному адресу, как
Views/Home/Index.cshtml
Ответ или решение
Объяснение проблемы и возможные решения для ошибки "Эта страница localhost не найдена – Веб-страница не была найдена по этому веб-адресу" в приложении ASP.NET Core.
Введение
Вы столкнулись с ошибкой "Эта страница localhost не найдена" при попытке отобразить индексную страницу вашего приложения ASP.NET Core. На основе предоставленных вами деталей, мы можем выделить несколько возможных причин и решений этой проблемы.
Анализ вашей конфигурации
1. Ошибка расположения вызова app.Run()
Как вы правильно заметили, вызов app.Run()
в вашем коде Program.cs
происходит до того, как вы настроили маршрутизацию и добавили маршруты контроллеров. Это критично, так как app.Run()
завершает обработку запросов и вызывает выполнение middleware, что делает невозможным дальнейшую настройку.
Как исправить:
Переместите вызов app.Run()
в конец конфигурации.
Исправленный код Program.cs
:
using Microsoft.EntityFrameworkCore;
namespace Employeeproject
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Добавляем службы в контейнер.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Настройка конвейера HTTP-запросов.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run(); // Теперь мы вызываем Run после всех конфигураций
}
}
}
2. Проверка структуры ваших представлений
Убедитесь, что ваше представление Index.cshtml
находится в правильной директории. Правильное расположение файла должно быть:
Views/Home/Index.cshtml
Если файл находится не в этом месте, ваше приложение не сможет его найти, и вы получите ошибку.
3. Проверка контроллеров
Ваш контроллер HomeController
выглядит правильно, и метод Index
возвращает представление Index
. Тем не менее, вы можете проверить, что метод Index
действительно вызывается. Для этого добавьте отладочные сообщения или логгирование.
Заключение
Обратите внимание на порядок выполнения в Program.cs
, чтобы гарантировать, что маршрутизация и middleware правильно настроены до вызова app.Run()
. Проверьте также расположение ваших представлений, чтобы избежать проблем с их загрузкой.
Примечание
Следите за логами приложения, чтобы получить более подробную информацию о произошедших ошибках. Это может помочь вам быстрее диагностировать проблемы в будущем.
Если у вас есть дополнительные вопросы или нужна более конкретная помощь, не стесняйтесь спрашивать!