【问题标题】:Simple .Net 5.0 web app getting 404s (using mvc)简单的 .Net 5.0 Web 应用程序获得 404(使用 mvc)
【发布时间】:2021-03-17 10:16:40
【问题描述】:

.Net新手在这里。我正在关注一个 Web 开发训练营,过去几天我遇到了一个持续存在的问题。我已经由几位助教、其他学生和几位教师运行过它,但到目前为止我们都被难住了。

我在浏览器中打开 localhost:5000 页面或使用邮递员时收到 404。该项目是使用dotnet new web --no-https -o ProjName 命令生成的,然后进行了编辑。

这是我的 Startup 的样子:

public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options => options.EnableEndpointRouting = false);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseMvc();
        }
    }

这是我的控制器的样子

using Microsoft.AspNetCore.Mvc;

namespace Portfolio.Controllers
{
    class HomeController : Controller
    {
        [HttpGet("")]
        public string Index() => "This is my index";
    }
}

注意,当我使用默认的自动生成代码但未将此控制器与属性路由模式一起使用时,我会收到响应。如果您知道如何解决这个问题,那将是一个很大的帮助,因为我落后了。

我尝试过的事情:

  • 卸载与 .net 相关的所有内容并安装单个版本(目前为 5.0.100,但我也尝试了其他几个版本)
  • 卸载并重新安装 IIS Express
  • 尝试从另一台计算机运行项目。不走运。
  • 更改端口。不走运。
  • 使用不同的浏览器。不走运。
  • 在我的键盘上抽泣。不走运。
  • 重做同一个项目十几次。

我很乐意提供任何其他信息,而且我通常精通技术,可以跟进建议的内容。

谢谢

【问题讨论】:

  • 感谢 Asier Villanueva 的回答。我没有将我的控制器类设置为公共。 womp womp。

标签: c# asp.net-core-mvc http-status-code-404 asp.net-core-5.0


【解决方案1】:

HttpGet 属性中指定一个空字符串就像指定无。

您可以在useMvc方法中定义默认路由模式:

app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "default",
    template: "{controller}/{action}/{id?}",
    defaults: new { controller = "Home", action = "Index" });
});

或者在HttpGet属性中设置一个斜线来设置方法的根路径:

HttpGet("/")

【讨论】:

  • 感谢您的回答。我尝试了您提供的两种解决方案,但不幸的是问题仍然存在。
  • 但是你测试的是哪条路线?
  • localhost:5000,验证了我的配置文件和终端中的 url。它能够连接到服务器,但在根路由上没有收到响应。
  • 对不起,您也必须将控制器类设置为公共
  • 我觉得我的手掌撞击额头时发生了脑震荡。谢谢你。现在看来很明显了!终于成功了!
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
相关资源
最近更新 更多