2009-04-24 42 views
13

Tôi đã đọc qua nhiều câu hỏi khác được đăng trên cùng một vấn đề, nhưng tôi vẫn không hiểu nguyên nhân và cách ngăn không cho nó xảy ra.ASP.NET tham nhũng lắp ráp "Không thể tải tập tin hoặc lắp ráp App_Web_ *"

Trong trường hợp của tôi, điều này xảy ra trên máy chủ sản xuất. Tôi nhận được cùng một lỗi đã được mô tả trong các câu hỏi khác, và tôi giải quyết nó bằng cách sao chép lại các hội đồng vào thư mục bin. Họ thậm chí không biên dịch lại các tập tin, họ là những người cùng trong đó trước đó - sao chép lại, và sau đó nó bắt đầu làm việc mà không có vấn đề.

Phần kỳ lạ của nó là tôi đang sử dụng dự án triển khai web để đổi tên tất cả các tệp lắp ráp của tôi thành thư mục dựa trên dll. Vì vậy, directory.dll và folder.subfolder.dll thay vì App_Web_jt8nxllz.dll. Tuy nhiên, lỗi vẫn còn tên tệp gốc App_Web_jt8nxllz.dll.

Xóa nội dung của thư mục C:\WINDOWS\Microsoft.NET\Framework[64]\v...\Temporary ASP.NET Files hoạt động và tất cả đều ổn, nhưng có ai biết cách ngăn chặn lỗi này xảy ra không? Ngoài ra, tắt IIS hoặc khởi động lại nó thực sự là không khả thi khi nó xảy ra trên máy chủ sản xuất. Có lẽ làm sạch thư mục Temp trên bộ lập lịch tự động?

Sự cố thực sự ở đây là gì? Có điều gì đó đặc biệt gây ra điều này xảy ra không? Các trang web sẽ được humming cùng không có vấn đề gì cả, và sau đó tất cả các đột ngột, toàn bộ một thư mục ngừng làm việc và sản xuất lỗi này.

Could not load file or assembly 'App_Web_jt8nxllz, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. 
Exception type 'System.IO.FileNotFoundException' was caught. 
Source: App_Web_whv5zsvd 
Target Site: Void __BuildControlTree(ASP.artists_controls_artistheader_ascx) 
Stack Trace: 
    at ASP.artists_controls_artistheader_ascx.__BuildControlTree(artists_controls_artistheader_ascx __ctrl) 
    at ASP.artists_controls_artistheader_ascx.FrameworkInitialize() 
    at System.Web.UI.UserControl.InitializeAsUserControlInternal() 
    at System.Web.UI.UserControl.InitializeAsUserControl(Page page) 
    at ASP._artists_artist_master.__BuildControlctlArtistHeader() 
    at ASP._artists_artist_master.__BuildControlctlContent(Control __ctrl) 
    at System.Web.UI.CompiledTemplateBuilder.InstantiateIn(Control container) 
    at ASP.master_mysite_master.__BuildControlMainContent() 
    at ASP.master_mysite_master.__BuildControlform1() 
    at ASP.master_mysite_master.__BuildControlBody() 
    at ASP.master_mysite_master.__BuildControlTree(master_mysite_master __ctrl) 
    at ASP.master_mysite_master.FrameworkInitialize() 
    at System.Web.UI.UserControl.InitializeAsUserControlInternal() 
    at System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection) 
    at System.Web.UI.MasterPage.get_Master() 
    at System.Web.UI.MasterPage.ApplyMasterRecursive(MasterPage master, IList appliedMasterFilePaths) 
    at System.Web.UI.Page.ApplyMasterPage() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Trả lời

3

Tôi đã bị lỗi với điều này, có một hotfix cho nó.

http://weblogs.asp.net/scottgu/archive/2007/04/11/public-hotfix-patch-available-for-asp-net-compilation-issues.aspx

Mặc dù nó không xảy ra với các máy/thiết lập mới hơn nữa.

+0

Hotfix này không hoạt động với tất cả mọi người. bạn có thể đọc thêm về một số vấn đề trong bài đăng này http://forums.asp.net/t/986130.aspx – YetAnotherDeveloper

8

Không chỉ liên kết trang web của tôi mà tôi đã gặp sự cố này và tôi đã viết a blog post on the topic. Kiểm tra nó ra, nó có liên kết để biết thêm thông tin về chủ đề này. Tuy nhiên, để tóm tắt ở đây là các chi tiết:

Vấn đề:

Trang web này là ném một lỗi khi cố gắng tải một điều khiển web tùy chỉnh. Bạn thấy trong bản phát hành cuối cùng, chúng tôi đã thêm một điều khiển tùy chỉnh mới vào một điều khiển web tùy chỉnh khác được hiển thị khi cần. Bởi vì kiểm soát con/cha mẹ bên ngoài và điều khiển con mới là các điều khiển riêng biệt trong nguồn, khi .Net Framework đi để biên dịch một trong hai điều khiển này và không biên dịch lại một điều khiển khác cùng lúc, bạn sẽ có một lỗi thời tập tin cố gắng tham khảo phiên bản cũ của hội đồng. Thực tế là khuôn khổ .Net nối thêm một chuỗi ngẫu nhiên vào tên của assembly tại thời gian biên dịch tên của tệp vừa được biên dịch và phiên bản trước của tệp gây ra tên tệp không phù hợp và do đó điều khiển bên ngoài/cha mẹ đang tìm kiếm tệp không còn tồn tại.

có thể làm việc xung quanh (s) hoặc Sửa chữa tạm thời:

1) Bằng cách thiết lập thuộc tính lô thẻ biên soạn false trong các trang web.tập tin cấu hình

<compilation debug="false" batch="false" /> 

2) Bạn cũng có thể làm giảm mức độ thường xuyên nó sẽ xảy ra bằng cách thiết lập bởi các numRecompileBeforeAppRestart tài sản:

<compilation debug="false" numRecompilesBeforeAppRestart="50" /> 

Xem KB Article 934839 để biết thêm chi tiết

Sửa chữa cho hành sau khi nó đã diễn ra:

1) Xóa các tệp ASP.Net tạm thời (điều này mất xuống trang web)

2) Buộc kiểm soát của cha/mẹ để biên dịch lại, chỉnh sửa và lưu tệp mã. Đây là một lựa chọn tốt hơn cho một sửa chữa hơn # 1 vì điều này không làm giảm trang web.

Đề nghị của tôi:

1) Trước tiên tôi nghĩ rằng chúng ta nên đưa ra giải pháp khắc phục tạm thời # 1 từ trên cao, điều này có thể ngăn chặn tất cả các vấn đề trong tương lai và có thể là câu trả lời duy nhất chúng ta cần.

2) Thứ hai tôi sẽ tải xuống và cài đặt hotfix 934839 của Microsoft trong môi trường QA để xác minh rằng nó không gây ra bất kỳ sự cố nào. Sau một thời gian thử nghiệm các hotfix trong QA tôi sẽ cài đặt các hotfix để có một sửa chữa vĩnh viễn cho vấn đề này. Tại thời điểm này, chúng tôi có thể xóa công việc tạm thời xung quanh # 1.

Lưu ý: Sau khi đặt Sửa chữa tạm thời # 1 Tôi chưa gặp sự cố. Tôi đã sửa chữa tại chỗ trong hơn 12 tháng và tất cả đều tốt!

0

Xóa tệp tạm thời hoặc thay đổi web.config không hoạt động đối với tôi. Đối với tôi, những gì cố định nó đã được khởi động lại máy tính của tôi.

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