2009-07-16 31 views
5

Tôi đang quan sát một số hành vi thực sự khó hiểu với sự kiện Application_BeginRequest trong tệp Global.asax của tôi (trong một ứng dụng ASP.NET MVC). Khi chạy qua trình gỡ rối, nếu tôi Làm mới trình duyệt của mình (IE7), sự kiện này sẽ kích hoạt hai lần. Nếu tôi nhấp vào một liên kết hoặc theo cách thủ công yêu cầu một trang, nó sẽ kích hoạt một lần - như mong đợi.Tại sao Application_BeginRequest() kích hoạt hai lần khi làm mới trình duyệt?

Tại sao nguyên nhân làm mới BeginRequest kích hoạt hai lần?

Tôi đang quan sát này với một dự án MVC thương hiệu mới với addeded sau đây để Global.asax.cs

protected void Application_BeginRequest() { 
    //executed twice 
} 

Đối với bối cảnh, tôi đang cố gắng để thêm một đối tượng mới để HttpContext.Current. Thu thập các mục trong sự kiện này, vì vậy nó sẽ tồn tại thông qua toàn bộ quá trình yêu cầu. Rõ ràng, tôi không muốn điều này xảy ra hai lần cho một yêu cầu làm mới duy nhất!

+0

Bạn có đang thực hiện bất kỳ loại chuyển hướng URL nào không? – cfeduke

+0

Wow; là 2 lần quá nhiều? Trong khi gỡ lỗi, Application_BeginRequest linh hoạt nhất như thời gian hundered. – usefulBee

Trả lời

7

Bạn có chắc chắn đó thực sự là 2 yêu cầu cho cùng một URL không? Tôi nghĩ rằng thứ hai có lẽ là một số JS, CSS hoặc tệp hình ảnh động. Hãy thử tìm hiểu bằng Fiddler hoặc bằng cách xem HttpContext.Current.Request.Uri trong trình gỡ lỗi

+0

Bingo! Tôi đã không nhận ra rằng điều này sẽ kích hoạt các tệp nội dung khác. Có vẻ như sự kỳ lạ với yêu cầu làm mới so với các yêu cầu khác là do IE yêu cầu tất cả nội dung (url, css, js, v.v.) trên làm mới, trong khi nhấp vào liên kết hoặc nhập lại url đó là lưu vào bộ nhớ cache mọi thứ nhưng url thực yêu cầu... –

0

Tôi không chắc tại sao điều này xảy ra nhưng tôi thấy dễ dàng hơn khi tạo lớp BaseController và có tất cả các trình điều khiển của tôi kế thừa từ nó. Thay đổi hàm tạo để thêm mục của bạn vào HttpContext.

+0

Ý tưởng hay. Điều này xảy ra với tôi, và xuất hiện rằng nó sẽ phải là giải pháp của tôi bây giờ. –

0

Bạn có tham chiếu trong HTML của mình cho một thứ gì đó cũng vượt qua đường dẫn ASP.NET, như một hình ảnh được tạo động hoặc một cái gì đó tương tự không?

2

Điều gì khiến tôi ngạc nhiên một thời gian nữa là nếu bạn có thẻ img trong html không có đường dẫn hình ảnh phù hợp, một số trình duyệt sẽ gửi yêu cầu đến trang gốc. Here is a related blog post.

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