首页 > 解决方案 > 如何在异常过滤器范围内获取应用程序库 url?

问题描述

我的应用程序托管在 url

https://example.com/app/____

现在我有自定义ExceptionFilter负责异常后的重定向

public class CustomExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        var ex = context.Exception;
        var c = (ControllerActionDescriptor)context.ActionDescriptor;

        (...)
        context.Result = new RedirectResult("/Error");
    }
}

问题是它重定向到

https://example.com/Error/

但我需要将它重定向到,/app/Error所以我需要获取base path/app/

我试过了

context.Result = new RedirectResult("错误");

context.Result = new RedirectResult("./Error");

但它们是在最后添加的,所以看起来像

https://example.com/app/auth/Error

同时我的目标是

https://example.com/app/Error

那么,我怎样才能获得应用path base程序exception filter

标签: c#asp.net-coreasp.net-core-mvc

解决方案


要访问基本路径,您可以尝试context.HttpContext.Request.PathBase.Value.

public class CustomExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        var basePath = context.HttpContext.Request.PathBase.Value;
        context.Result = new RedirectResult($"{ basePath }/Error");
    }
}

推荐阅读