2010-09-10 4 views
12

Tôi đang gỡ lỗi ứng dụng ASP.NET 2.0 đang bị tải chậm trang ban đầu.Nhiều sự kiện Application_Start bắn

Thông qua việc thêm ghi nhật ký, tôi nhận thấy rằng sự kiện Application_Start kích hoạt hai lần khi khởi động với sự chậm trễ ngắn giữa hai sự kiện. Sự kiện Session_Start cũng kích hoạt hai lần, với cùng một giá trị ID phiên.

ví dụ:

 
[Header] 
2010-09-10 14:52:36.331 INFO Web.Global.Application_Start   START 
2010-09-10 14:52:37.409 INFO Web.Global.Session_Start    Session.SessionID=xxqjvun2ce2yqsumq1hfoj45 
[Header] 
2010-09-10 14:53:10.028 INFO Web.Global.Application_Start   START 
2010-09-10 14:53:10.325 INFO Web.Global.Session_Start    Session.SessionID=xxqjvun2ce2yqsumq1hfoj45 

Tôi đang chạy máy này trên máy cục bộ của mình, trong IIS 5.1. Dự án cũng sử dụng ASP.NET MVC và URL trang aspx đang được sử dụng được thay đổi bằng cách sử dụng định tuyến, using the technique shown on Phil Haack's site.

Bất kỳ đề xuất nào về điều gì có thể gây ra điều này?

+2

Ứng dụng có khả năng sửa đổi tệp web.config không? – muratgu

+0

Bạn có Application_End bị sa thải ở giữa không? Bạn có bất kỳ cuộc gọi đến "HttpRuntime.UnloadAppDomain" trong mã của bạn? – Alex

+1

Trong trường hợp của tôi nó đã được quét virus của Mc Afee. Tôi đã làm theo hướng dẫn này để loại trừ các thư mục https://support.microsoft.com/en-us/kb/3126034 – gavin

Trả lời

11

Cuối cùng chúng tôi đã nhận ra rằng điều này là do cấu hình IIS của chúng tôi.

Một số thời gian trước đây đã có quyết định đổi tên thư mục ảo được sử dụng cho trang web này. Điều này được thực hiện bằng cách thêm một cấu hình thư mục ảo hoàn toàn mới, để lại cấu hình trước đó. Về cơ bản chúng tôi đã có hai thư mục ảo trỏ vào cùng một ứng dụng ASP.NET!

Việc di chuyển sang thư mục ảo mới chưa bao giờ được hoàn thành, do đó các phần của trang web vẫn tham chiếu đến cũ. Do đó hai Application_Start sự kiện ...

Cách khắc phục là thay đổi cài đặt vào thư mục ảo trong IIS cũ là Một chuyển hướng đến một URL với URL thiết lập để /NewVirtualDirectory $ S $ Q

3

Chúng tôi đã có một tình huống tương tự xảy ra chỉ để khám phá ra rằng đó là bởi vì chúng tôi đã thực hiện một đổi tên lắp ráp và có hai bản sao của cùng một mã tham chiếu rằng lắp ráp tồn tại, versionA.dll và versionB.dll. Vì vậy, nó đã được gọi hai lần vì điều đó!

0

Trong tôi có kinh nghiệm (sau khi nghiên cứu giờ và tấn mã hóa) mà đến từ

mới phục hồi SQLite.Interop.dll trong thư mục x64

Tôi đã xóa bởi Quản lý File từ lưu trữ bảng thay vì FTP (FileZilla) và Multiple Application_Start sự kiện bắn đi :-) Nguyên nhân gốc của vấn đề là quá trình Quartz.Net không thể ngăn cản được kết nối với dll này.