.NET中如何根据URL在Startup.cs配置不同首页端点?
解决.NET MVC多首页路由问题
你的核心问题出在重复配置端点路由,以及可能缺少对应控制器的Action方法来关联视图。下面一步步解决:
1. 修复Startup.cs的路由配置
你现在两次调用app.UseEndpoints,不仅冗余,还会导致同名路由冲突。把所有路由规则合并到一次UseEndpoints调用中:
app.UseEndpoints(endpoints => { // 默认路由:根路径默认指向Home/Other endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Other}/{id?}" ); // 可选:添加快捷路由,直接通过/Site访问Home/Site endpoints.MapControllerRoute( name: "site-shortcut", pattern: "Site", defaults: new { controller = "Home", action = "Site" } ); endpoints.MapRazorPages(); });
2. 确保HomeController存在并关联视图
Views/Home下的.cshtml是MVC视图,必须对应HomeController中的Action方法才能渲染。创建Controllers/HomeController.cs文件,代码如下:
using Microsoft.AspNetCore.Mvc; namespace YourAppName.Controllers; // 替换成你的项目命名空间 public class HomeController : Controller { // 返回Other.cshtml视图 public IActionResult Other() { return View(); } // 返回Site.cshtml视图 public IActionResult Site() { return View(); } }
3. 正确的URL访问方式
配置完成后,用以下URL即可访问对应页面:
- 根路径
myapplication.azurewebsites.net/:默认打开Other.cshtml myapplication.azurewebsites.net/Home/Site:打开Site.cshtml- 如果添加了快捷路由,还可以用
myapplication.azurewebsites.net/Site直接访问Site.cshtml
你之前尝试的带Views或.cshtml后缀的URL都是错误的——MVC框架不会直接暴露视图文件路径,必须通过控制器的Action来访问。
内容的提问来源于stack exchange,提问作者Ken Newman
相关产品推荐
相关产品推荐

