在mvc/Controller中获取本地URL时无法识别本地URL

本文关键字:URL 识别 mvc 获取 Controller | 更新日期: 2023-09-27 18:28:49

我正在尝试测试以下代码。这是一个总结代码。

string url = filterContext.HttpContext.Request.Url.ToString();
if (Url.IsLocalUrl(url))
        {
            return Redirect(url);
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }

在这段代码中,url是从上下文中获得的,但在我的原始代码中,它是作为Authorize过滤器中的字符串传递给控制器操作的,看起来像Debug.Write中的http://localhost:53249/Products。然而,IF不满意url是本地url,有人能解释我做错了什么吗。

在mvc/Controller中获取本地URL时无法识别本地URL

使用以下句子解决问题

string url = filterContext.HttpContext.Request.Url.PathAndQuery;

我想您只需要检查HttpRequest.IsLocal

将returnUrl传递给Url.IsLocalUrl(),而不是当前请求Url上下文。您将无效url传递到url.IsLocalUrl().