Website ASP.NET 2.0/3.5 báo lỗi “The type XXX exists in both AAA.DLL and BBB.DLL

Website ASP.NET 2.0/3.5 báo lỗi “The type XXX exists in both AAA.DLL and BBB.DLL

Bạn 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 2.0/3.5.

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 bạn 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 bạn đồ 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:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files.

Khi nạp trang web để xử lý, lỗi xuất hiện nếu có 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)

Khắc phục

Có 2 phương pháp để khắc phục tình trạng này:

Phương pháp : Điều chỉnh web.config

Bạn 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 bạn 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 bạn 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ủ.

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), bạn 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 bạn, chúng tôi đề nghị bạn đọc nguyên bản ở đây: http://support.microsoft.com/kb/919284.


Chia sẻ bài viết

Bình luận