gpt4 book ai didi

c# - ASP.NET核心: How to get original path in error page by 404 status code

转载 作者:行者123 更新时间:2023-12-03 08:22:36 25 4
gpt4 key购买 nike

在我的asp.net core应用程序中,每次发生错误后,请求的地址都会更改为站点错误页面地址如何在错误页面中检索原始请求的地址?
启动.cs:

public class Startup
{
private const string ErrorHandlingPath = "/Error";

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler(ErrorHandlingPath);

app.UseStatusCodePagesWithReExecute(ErrorHandlingPath);;

app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}

错误.cshtml.cs


public class ErrorModel : PageModel
{
public void OnGet()
{
var status = HttpContext.Response.StatusCode;//=404
var originalPath = HttpContext.Request.Path.Value;//=Error
var feauter = Request.HttpContext.Features.Get<IExceptionHandlerPathFeature>();//=null
var path = feauter?.Path;//=null
}
}

最佳答案

据我所知,您可以使用以下代码获取原始路径:

    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
//var re = HttpContext.Request.Path;
var feauter = Request.HttpContext.Features.Get<IExceptionHandlerPathFeature>();
var path = feauter.Path;

return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}

结果:

enter image description here

更新

由于您使用了 razor 页面的状态码重新执行方法,因此您应该使用 IStatusCodeReExecuteFeature。

更多详细信息,您可以引用以下代码:

    public void OnGet()
{

var feauter = Request.HttpContext.Features.Get<IStatusCodeReExecuteFeature>();//=null
var path = feauter?.OriginalPath;//=null
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
}

enter image description here

关于c# - ASP.NET核心: How to get original path in error page by 404 status code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67428807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com