2012-02-15 26 views
5

Tôi đang gặp khó khăn trong việc thực thi sự kiện On_Error trong tệp Global.asax. Khi ứng dụng nhận được lỗi, nó sẽ đi đến tập tin Global.asax, đăng nhập lỗi trong cơ sở dữ liệu và chuyển hướng đến trang lỗi tùy chỉnh. Đoạn mã trên làm việc tốt ở địa phương của tôi, nhưng một khi tôi triển khai giống nhau trong máy DEV, Global.asax sẽ không được thực thi.Cách kiểm tra xem tệp Global.asax có đang được gọi là

Nó luôn luôn chuyển hướng đến trang lỗi custome tôi đã đề cập trong web.config

<customErrors mode="On" defaultRedirect="/Error_Redirect.asp"> 
     <error statusCode="404" redirect="/404.asp"/> 
    </customErrors> 

Cấu trúc dự án trong IIS là như Test1 \ Test 2. Mã lỗi xử lý tôi đang cố gắng là trong thử nghiệm 2 và một diectory ảo của nó trong IIS.If tôi có bất kỳ lỗi trong file web.config, như "Phần đã đề cập", sau đó lỗi là nhấn tập tin Global.asax. Nếu có bất kỳ lỗi thời gian chạy như dưới đây, nó không phải là đến tập tin Global.asax.

Int32 i, j, k; 
i = 10; 

j = 0; 

k = i/j; 

Response.Write(k); 

. Tôi thậm chí còn mệt mỏi khi đặt chế độ thành Tắt/Từ xa. Bất kỳ đề xuất nào ??

Cảm ơn,

+0

Có thể điều này sẽ giúp: http://stackoverflow.com/questions/5604144/application-error-does-not-fire –

+0

@Tim Tôi đã thử các tùy chọn đó. Nhưng có vẻ như việc bắn Global.asax là không nhất quán. Đôi khi nó nhấn tập tin Global.asax, nhưng không phải là hằng số. Tự hỏi nếu nó bất cứ điều gì để làm với thiết lập IIS. – Vani

+0

Bạn không có nghĩa là sự kiện Application_Error? Nó chỉ kích hoạt sự kiện nếu customErrors mode = "Off". –

Trả lời

0

Có khả năng ứng dụng của bạn được tải vào nhiều quy trình hoặc miền ASP.NET không? Khi bạn đang sử dụng "Test1/Test2", bạn có nghĩ rằng có khi nào một URL mà bạn gọi đi qua "Test1/Test2" và đôi khi thông qua "Test2" không?

Gần đây, tôi đã làm việc trên một POC trong ASP.NET và do nhầm lẫn di chuyển Global.asax vào một thư mục con chứ không phải là gốc của ứng dụng. Tôi đã mong đợi một số mã trong sự kiện bắt đầu của Ứng dụng để kích hoạt - không bao giờ bị sa thải. Sau khi di chuyển nó trở lại thư mục gốc của ứng dụng, điều này bắt đầu hoạt động như mong đợi.

Vì vậy, khi bạn gọi qua "Test2", trình xử lý ngoại lệ của Global.asax sẽ kích hoạt khi bạn gọi qua "Test1/Test2" thì Global.asax của bạn không kích hoạt.

+0

Cấu trúc thư mục của tôi giống như FolderA/FolderB. Thư mục B chứa tệp .aspx.cs [tệp chứa lỗi] và tệp global.asax. – Vani

1

Trình duyệt của bạn có thể cache chuyển hướng. cố gắng sửa đổi URL hơi khác. Giống như thêm? Cái gì đó sau URL hiện tại của bạn, bạn có thể chắc chắn rằng nó không được lưu trong trình duyệt của bạn.

Hoặc bạn cũng có thể thử xóa thay đổi ctrl trong trình duyệt của mình để xóa bộ nhớ cache.

Nếu bạn cần phải chắc chắn asax toàn cầu của bạn là đi, bạn có thể sử dụng một cái gì đó như thế này trong bộ quản lý sự kiện của bạn bên trong tập tin global.asax.

HttpContext.Current.Response.Write("TEST"); 
HttpContext.Current.Response.End(); 
2

Bạn nên thử và thả tệp precompiledapp.config từ gốc. (ít nhất hãy đổi tên tạm thời)

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