aspnetcore 2中的Razor Pages默认页面

Gre*_*Gum 10 asp.net-core asp.net-core-2.0

默认情况下,Razor Page应用程序会转到Home/Index

有没有办法将其更改为Home/App?

这在MVC中非常简单,但是使用不同路由设置并因此使用MVC路由的Razor页面不适用.

我认为它会在某个选项中出现,但我看不到它:

services.AddMvc()
            .AddRazorPagesOptions(options =>
            {
                options.Conventions.AuthorizeFolder("/Account/Manage");
                options.Conventions.AuthorizePage("/Account/Logout");
                options. ??SetDefaultPage??
            });
Run Code Online (Sandbox Code Playgroud)

我试过这个:

options.Conventions.AddPageRoute("/App", "");

但现在找到两个默认路由并生成错误:

AmbiguousActionException:匹配多个动作.以下操作匹配路由数据并满足所有约束:

页面:/ App

页面:/索引

可以通过从项目中删除Pages/Index.cshtml来解决此错误,但我也希望保留该页面.

McG*_*V10 5

很确定这是不可能的。Index文档说运行时控制默认的搜索。我找不到当前版本中发生这种情况的位置,但在即将发布的版本中添加了IndexFileNamestatic的内部类:PageRouteModelFactory

private static readonly string IndexFileName = "Index" + RazorViewEngine.ViewExtension;

不过,向 中添加一个配置属性似乎并不困难RazorPagesOptions。ASP.NET 人员的反应非常灵敏,我会以 GitHub 问题的形式提出请求,并希望得到最好的结果。


Egu*_*ovD 5

在我的情况下,歧义是由Pages/Index.cshtml留在项目中引起的。这有效:

  1. options.Conventions.AddPageRoute("/App", "");
  2. 删除或重命名 Pages/Index.cshtml