Эта страница localhost не найдена – Веб-страница не найдена по указанному веб-адресу. – ASP Dot Net Core

Вопрос или проблема

Я недавно создал новый 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(). Проверьте также расположение ваших представлений, чтобы избежать проблем с их загрузкой.

Примечание

Следите за логами приложения, чтобы получить более подробную информацию о произошедших ошибках. Это может помочь вам быстрее диагностировать проблемы в будущем.

Если у вас есть дополнительные вопросы или нужна более конкретная помощь, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...