我想将Areas用于我的RazorPage 3.1 Core项目。但是,我似乎无法从
从http://localhost:<port>
到http://localhost:<port>/Default/Index
,当我使用Areas并将我的Pages文件夹移到Areas / Default / Pages的那一刻,我在主页上看到一个明显的404。每次启动该项目时,主页上都会显示一个404。
还是我应该在Areas文件夹之外有1个Pages文件夹,其索引如下图所示?那太奇怪了。
我尽我所能找到所有东西,但我不知道。我认为必须将其设置在Startup.cs中的某个位置:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Default/Index", ""); // Or something?
});
和:
public IActionResult Get()
{
return RedirectToAction("Default/Index");
}
这对我不起作用:
答案 0 :(得分:1)
将首页路由到区域内的索引
在用户访问您网站的根URL时,您似乎想在index
区域文件夹下显示Default
页。
要达到此要求,您可以尝试执行如下的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();
});
}
测试结果