Tôi hiểu rằng cả hai đều không thay đổi URL mà khách hàng nhìn thấy. Có điều gì trong họ khiến một người trong số họ thích hợp hơn người kia không?
Tôi dự định sử dụng nó trong Application_BeginRequest trong Global.asax, nhưng cũng trong trang aspx thông thường.Server.Transfer vs. Context.RewritePath
Trả lời
Tôi nghĩ rằng Context.RewritePath()
là tùy chọn tốt hơn. Lý do:
Server.Transfer()
ném mỗi lần ThreadAbortException
. Kết quả của việc gọi Response.End()
.
Để biết thêm thông tin chi tiết đọc các bài viết MS sau:
- ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer
- HttpServerUtility.Transfer Method on MSDN
biết thêm thông tin:
Server.Transfer()
không gửi một lệnh HTTP 302 chuyển hướng như Response.Redirect()
sẽ làm gì .
Theo HttpContext.RewritePath on MSDN, RewritePath()
được sử dụng trong trạng thái phiên không nấu.
Ngoài ra, trên một chủ đề khác nhau, Server.Transfer()
và Server.Execute()
rất khác nhau:
Server.Execute()
lợi nhuận kiểm soát để trang ban đầu ngay sau khi nơi nó được gọi.
Ví dụ:
<div>
test 1 <br/>
<% Server.Execute("include.aspx?hello=ok"); %>
test 2 <br/>
</div>
Would đầu ra:
kiểm tra 1
nội dung của include.aspx hello = ok
thử nghiệm 2
Context. RewritePath Gán một đường dẫn viết lại nội bộ và cho phép URL được yêu cầu khác với đường dẫn nội bộ đến tài nguyên. RewritePath được sử dụng trong trạng thái phiên cookieless.
Trong khi Server.transfer chuyển nội dung được thu thập để xử lý một trang sang một trang khác.
Để tránh ngoại lệ được ném bởi Server.Transfer, bạn có thể sử dụng Server.Execute. Cả hai Server.Transfer và Server.Execute KHÔNG phát hành một thông báo HTTP 302. Chỉ Response.Redirect phát hành tiêu đề này và yêu cầu trình duyệt đi đến đích mới, tuyên bố rằng nó đã được tạm thời di chuyển. Cả hai Server.Transfer và Server.Execute cho phép bạn thực hiện một trang khác nhau để phục vụ yêu cầu hiện tại.
- 1. Server.Transfer Vs. Response.Redirect
- 2. Server.Transfer() Vs. Server.Execute()
- 3. 404 trang response.redirect vs server.transfer
- 4. Server.transfer thay đổi URL lần thứ hai
- 5. TransferRequest vs Chuyển trong ASP.Net
- 6. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 7. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 8. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, họ có điểm gì chung?
- 9. ACE vs Boost vs Poco vs wxWidgets
- 10. NetSqlAzMan vs AzMan vs (?????)
- 11. & vs * và | vs +
- 12. Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc
- 13. Htmlentities vs addslashes vs mysqli_real_escape_string
- 14. Delegate.CreateDelegate vs DynamicMethod vs Biểu
- 15. RazorEngine vs RazorTemplates vs RazorMachine
- 16. HttpRequest vs HttpRequestMessage vs HttpRequestBase
- 17. getchar_unlocked() VS scanf() VS cin
- 18. gruntjs vs yeoman vs guard
- 19. Coroutine vs Continuation vs Generator
- 20. DataView.RowFilter Vs DataTable.Select() vs DataTable.Rows.Find()
- 21. Shmem vs tmpfs vs mmap
- 22. Processing.js vs. CAKE vs. Raphael.js
- 23. Mongoose.model vs Connection.model vs Model.model
- 24. MySQL vs Firebird vs SQLite
- 25. window.onload vs. body.onload vs. document.onready
- 26. Selenium vs. SimpleTest vs. WatiN
- 27. Matlab vs Aforge vs OpenCV
- 28. select vs poll vs epoll
- 29. fadeIn vs fadeOut vs fadeTo
- 30. int vs NSNumber vs NSInteger