Website ASP.NET 2.0/3.5 báo lỗi “The type XXX exists in both AAA.DLL and BBB.DLL
Quý khách có thể gặp phải thông báo lỗi như dưới đây trong trường hợp Upload lên Web Hosting một Website ASP.NET.
Nội dung thông báo lỗi:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0433: The type ‘ASP.clientredirector_ascx’ exists in both ‘c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filessb24d76034ebec2c8d0App_Web_clientredirector.ascx.cdcab7d2.zmdrab5k.dll’ and ‘c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filessb24d76034ebec2c8d0App_Web_axhgbqrn.dll’
Source Error:
Line 11:
Line 12: <!– client redirector –>
Line 13: <sb:ClientRedirector runat=”server” id=”ClientRedirector” />
Line 14:
Line 15: <!– fragment monitor –>
Source File: d:projectminesb2pageLayout.ascx Line: 13
1.Nguyên nhân:
Website ASP.NET hoặc Web Application được máy chủ biên dịch tự động lần đầu tiên được kích hoạt hoặc khi Quý khách Upload tập tin .DLL mới. Tiến trình này sẽ hoàn tất trong vài giây, có thể lâu hơn nếu website của Quý khách đồ sộ. Sau khi biên dịch xong, các tập tin .DLL chứa mã sẽ được lưu tạm vào thư mục: c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files.
Khi nạp trang web để xử lý, lỗi sẽ xuất hiện nếu nằm trong các điều kiện:
+) Có Class trùng tên nhau được sử dụng để lập trình một User-Control.ascx
+) Cho dù Class bị trùng tên nằm trong 2 Namespace khác nhau, nhưng cùng được tham chiếu vào một WebApplication (References)
2.Khắc phục:
Có 2 phương pháp để khắc phục tình trạng này:
2.1.Phương pháp 1: Điều chỉnh web.config
Quý khách mở tập tin web.config, bổ sung thuộc tính batch=”false” vào thẻ <compilation>.
Lưu ý: Phương pháp này chỉ phù hợp cho website nhỏ. Trong môi trường Web Hosting, nếu Quý khách chỉ định batch=”false” sẽ làm cho ASP.NET 2.0 biên dịch riêng rẽ từng trang ra một .DLL tương ứng. Việc này gây tốn nhiều bộ nhớ và tài khoản Web Hosting của Quý khách có thể bị khóa nếu Website có lượng truy cập cao. Về kỹ thuật, việc này sẽ gây phân mảnh bộ nhớ trên máy chủ.
2.2.Phương pháp 2: Sắp xếp lại thư mục trong ứng dụng (Web Project trong Visual Studio)
Để tránh cho các Class bị tham khảo lẫn nhau (circular reference), Quý khách thử thực hiện:
+) Kiểm tra lại các mối liên hệ sử dụng một Class bởi những Class khác.
+) Tìm kiếm xem liệu DLL-1 bị tham khảo DLL-2, và DLL-2 lại tham khảo ngược lại DLL-1.
+) Đặt các Class được tham khảo đến trong cùng một thư mục.
Nếu mô tả trên khó hiểu đối với Quý khách, Chúng tôi đề nghị Quý khách đọc nguyên bản ở đây: http://support.microsoft.com/kb/919284.