繁体   English   中英

ASP.NET Core MVC 不会在默认路由上启动

[英]ASP.NET Core MVC doesn't launch on default route

出于某种奇怪的原因,它会启动到 https://localhost:44397/index.html 而不是我的家庭控制器中的 Index 方法。 我在 wwwroot 中没有 index.html 文件,所以我不知道为什么会发生这种奇怪的行为。

我只想有正常的行为,当 URL 像这样 https://localhost:44397/ 时直接启动到索引。

如果这有帮助,我还有其他一些 API 控制器,但是我之前已经做过很多次了,所以我不怀疑这是导致此问题的原因。我还尝试创建一个新的 MVC 项目并直接运行,并且库存模板工作正常。 任何帮助将不胜感激,谢谢。

我有一个看起来像这样的家庭控制器

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }

我的配置方法

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();

            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();
            app.UseSession();
            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

           // CreateRoles(serviceProvider);
        }

启动设置.json 文件

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:64858",
      "sslPort": 44397
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    },
    "IcartE1": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    }
  }
}

有同样的问题,对我来说是缓存重定向网址的浏览器。 因此,如果您按 f12 并选择(空缓存和硬重载)。 它将清除它并停止将您路由到 index.html

或阅读此https://superuser.com/questions/304589/how-can-i-make-chrome-stop-caching-redirects

在此处输入图像描述

首先,你需要定义 AddControllers 依赖注入,所以在 ConfigureServices 方法中添加这一行:

services.AddControllers();

之后,将此路由添加到 Endpoints 中间件参数:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller}/{action}/{id?}",
            defaults: new { controller = "Home", action = "Index" });
            endpoints.MapControllers();
        });

看起来像我遇到的问题,关于浏览器缓存

您可以查看此链接的答案: Weird redirection problem with ASP.NET Core 6 Razor pages application

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM