将主页路由到区域内的索引?
Route homepage to Index inside Areas?
我想为我的 RazorPage 3.1 核心项目使用区域。但是,我似乎无法将主页从
http://localhost:<port>
到 http://localhost:<port>/Default/Index
,当我使用 Areas 并将我的 Pages 文件夹移动到 Areas/Default/Pages 时,我的主页出现了明显的 404。每次启动该项目时,主页都会出现 404。
或者我是否应该在区域文件夹之外有 1 个页面文件夹,其索引如下图所示?那会很奇怪。
我尝试了所有我能找到的方法,但还是想不通。我认为它必须设置在 Startup.cs:
中的某处
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Default/Index", ""); // Or something?
});
和:
public IActionResult Get()
{
return RedirectToAction("Default/Index");
}
这对我不起作用:
Route homepage to Index inside Areas
您似乎希望在 Default
区域文件夹下显示 index
页面,同时用户访问您网站的根目录 URL。
为了达到要求,您可以尝试URL重写操作,如下所示。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.Use(async (context, next) =>
{
if (context.Request.Path=="/")
{
context.Request.Path = "/Default/Index";
}
await next.Invoke();
});
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
测试结果
我想为我的 RazorPage 3.1 核心项目使用区域。但是,我似乎无法将主页从
http://localhost:<port>
到 http://localhost:<port>/Default/Index
,当我使用 Areas 并将我的 Pages 文件夹移动到 Areas/Default/Pages 时,我的主页出现了明显的 404。每次启动该项目时,主页都会出现 404。
或者我是否应该在区域文件夹之外有 1 个页面文件夹,其索引如下图所示?那会很奇怪。
我尝试了所有我能找到的方法,但还是想不通。我认为它必须设置在 Startup.cs:
中的某处 services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Default/Index", ""); // Or something?
});
和:
public IActionResult Get()
{
return RedirectToAction("Default/Index");
}
这对我不起作用:
Route homepage to Index inside Areas
您似乎希望在 Default
区域文件夹下显示 index
页面,同时用户访问您网站的根目录 URL。
为了达到要求,您可以尝试URL重写操作,如下所示。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.Use(async (context, next) =>
{
if (context.Request.Path=="/")
{
context.Request.Path = "/Default/Index";
}
await next.Invoke();
});
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
测试结果