在ASP.NET Core 2.2中,路由重定向的方式发生了一些变化。下面是一个解决方法,包含代码示例:
首先,确保你已经安装了Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation(如果尚未安装,可以通过NuGet包管理器或者在.csproj文件中手动添加依赖项)。
在Startup.cs文件中,将"services.AddMvc()"替换为"services.AddControllersWithViews()",并在该行之后添加一行代码:"services.AddRazorPages().AddRazorRuntimeCompilation()"。这将启用运行时编译功能。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages().AddRazorRuntimeCompilation();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
app.UseStaticFiles();
这将映射默认的控制器路由并启用Razor页面路由。
// 旧的重定向方法
return RedirectToAction("ActionName", "ControllerName");
// 新的重定向方法
return RedirectToPage("/ControllerName/ActionName");
根据你的情况,将"ActionName"和"ControllerName"替换为你的实际值。
通过这些步骤,你应该能够解决ASP.NET Core 2.2升级中的默认路由重定向问题。