2011-08-11 25 views
5

Khi tôi chuyển hướng như cách nàyTại sao có sự khác biệt giữa Response.Redirect vs new RedirectResult()?

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

để trình duyệt chuyển hướng đến http://mydom.com/httpS://mydom.com

nhưng nếu tôi chuyển hướng theo cách này

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

để trình duyệt chuyển hướng một cách chính xác để https://mydom.com

Tại sao có sự khác biệt?

+0

tốt, bạn đã tuyên bố sự khác biệt: D – Shaokan

+0

Nhưng tại sao điều này lại xảy ra? – theateist

Trả lời

2

Trước hết, RedirectResult là một lớp trong khi HttpResponse.Redirect là một phương pháp. Trong khi trước đây chuyển hướng người dùng đến một URI được chỉ định, thì sau đó chuyển hướng bạn đến một URL đã cho. Để xem sự khác biệt giữa URL và URI see here.

Hy vọng rằng sẽ giúp

+1

Trong phản xạ tôi thấy những gì RedirectResult hiện 'chuỗi url = UrlHelper.GenerateContentUrl (this.Url, context.HttpContext); context.Controller.TempData.Keep(); ngữ cảnh.HttpContext.Response.Redirect (url, false); ', vì vậy, tôi có thể thấy ReidrectResult cũng chuyển hướng đến URL chứ không phải URI. Những gì tôi nhớ? – theateist

+0

@theateist Rõ ràng, HttpResponse.Redirect sử dụng true như một giá trị mặc định và do đó chấm dứt hành động ngay lập tức. Trong khi RedirectResult, nếu mã của bạn là những gì nó sử dụng, không chấm dứt hành động ngay lập tức. – Shaokan

Các vấn đề liên quan