Tôi có một trang Response.Redirect
trong trang Nhân viên của tôi. Nó chuyển hướng đến trang Lương.Có thể "EndResponse" tăng hiệu suất của trang ASP.Net
Response.Redirect ("Salary.aspx");
Nó hoạt động tốt cho đến khi tôi thêm xử lý ngoại lệ như dưới đây. .
try
{
Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
throw new Exception();
}
//Remaining code in event handler
này gây ra một ngoại lệ mới nói "Chủ đề đã bị hủy bỏ” Tôi đến biết rằng điều này có thể tránh được bằng cách thiết lập endResponse
như sai để chuyển hướng
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Giải thích về ngoại lệ mới.: Nó luôn luôn ném ngoại lệ nhưng được xử lý bởi khuôn khổ.Khi tôi thêm một try..catch nó đã bị bắt ở đó (và tôi ném một ngoại lệ mới)
Lưu ý: CompleteRequest
bỏ qua các bộ lọc HTTP và mô-đun, nhưng nó không 't bypa ss sự kiện tiếp theo trong vòng đời trang hiện tại
Lưu ý: Phản hồi.Xin chuyển ngoại lệ này sang xử lý kết thúc của trang hiện tại. ASP .Net tự xử lý ngoại lệ này và gọi ResetAbort
để tiếp tục xử lý.
HỎI
- dù “thiết endResponse như false” có thể tăng hiệu suất kể từ khi ngoại lệ được ném không?
- Liệu “đặt endResponse là sai” có thể giảm hiệu suất vì các sự kiện vòng đời trang không bị chấm dứt?
Pitfall
- Nếu bạn đặt endResponse như
false
, mã còn lại trong eventhandler sẽ được thực thi. Vì vậy, chúng ta cần phải thực hiện kiểm traif
cho mã còn lại (Kiểm tra: nếu tiêu chí chuyển hướng không được đáp ứng).
Reference
- Why Response.Redirect causes System.Threading.ThreadAbortException?
- ASP.NET exception "Thread was being aborted" causes method to exit
'Hiệu suất' có thể đo lường từ các khía cạnh khác nhau !!! những gì bạn chính xác mong đợi? –
@huMptyduMpty Hiệu suất từ các quan điểm sau đây 1) Thời gian phản hồi của trang 2) Sử dụng bộ nhớ – Lijo
Ngoài ra, vì bạn đang cố gắng cải thiện hiệu suất trang web của mình, [this] (http://msdn.microsoft.com/en-us/magazine/cc163854 .aspx) có thể cung cấp một số thông tin cũng như –