如何在异常过滤器范围内获取应用程序基本URL?

时间:2019-07-03 12:09:08

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

我的应用托管在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的{​​{1}}

我尝试过

  

context.Result =新的RedirectResult(“错误”);

     

context.Result =新的RedirectResult(“ ./ Error”);

但是它们被添加到最后,所以看起来像

/app/

同时我的目标是

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

那么,如何在https://example.com/app/Error中获得应用path base

1 个答案:

答案 0 :(得分:0)

要访问基本路径,可以尝试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");
    }
}