为什么Response.Redirect与新的RedirectResult()之间存在差异?

the*_*ist 6 model-view-controller asp.net-mvc

当我像这样重定向

 protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
      filterContext.Result = new RedirectResult("https://mydom.com");
 }
Run Code Online (Sandbox Code Playgroud)

所以浏览器重定向到http://mydom.com/httpS://mydom.com

但如果我这样重定向

 protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
      var res = filterContext.HttpContext.Response;
      filterContext.Result = res.Redirect("https://mydom.com");
 }
Run Code Online (Sandbox Code Playgroud)

所以浏览器正确地重定向到https://mydom.com

为什么会有区别?

Sha*_*kan 3

首先,RedirectResult是一个类,而HttpResponse.Redirect是一个方法。前者将用户重定向到指定的 URI,而后者会将您重定向到给定的 URL。要了解 URL 和 URI 之间的差异,请参见此处

希望有帮助