简单的 .Net 5.0 Web 应用程序获得 404(使用 mvc)

Posted

技术标签:

【中文标题】简单的 .Net 5.0 Web 应用程序获得 404(使用 mvc)【英文标题】:Simple .Net 5.0 web app getting 404s (using 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。 【参考方案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。它能够连接到服务器,但在根路由上没有收到响应。 对不起,您也必须将控制器类设置为公共 我觉得我的手掌撞击额头时发生了脑震荡。谢谢你。现在看来很明显了!终于成功了!

以上是关于简单的 .Net 5.0 Web 应用程序获得 404(使用 mvc)的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 .NET 5.0 Web 应用程序执行存储过程时出现转换错误

在 Xamarin 上的 Asp Net 5.0 中使用 AntiForgeryToken 访问 Web API

.net core 5.0 with IdentityServer4 返回 api 方法 404

在 asp.net 5.0 web api 项目中访问中间件中的 TempData

Asp.Net Core Web API 5.0 和 Angular 中基于自定义角色的授权

.NET 5.0 和 SOAP Web 服务