2013-02-20 6 views
11

Tôi thấy lỗi sau đây bị cắt đôi (dường như ngẫu nhiên) trên ứng dụng web của tôi. Chúng tôi đang chạy Windows Server 2008R2, IIS 7.5, MVC3, .NET 4.5.Định kỳ xem lỗi ASP.NET CS0656: Thiếu trình biên dịch yêu cầu thành viên

Compiler Error

Đó là lỗi tương tự mỗi khi: CS0656: Thiếu biên dịch cần thành viên 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'

Khi lỗi này xảy ra, nó có thể mất bất cứ điều gì từ một khởi động lại nhóm ứng dụng, để cài đặt lại chính ứng dụng của chúng tôi, để sửa chữa nó.

Lỗi xảy ra trên hình ảnh VM hoàn toàn mới (không cài đặt trước phần mềm của chúng tôi), cũng như các máy trước đó đã cài đặt phần mềm của chúng tôi trên đó. Lỗi có thể xảy ra khi lần chạy đầu tiên của ứng dụng, hoặc khi ứng dụng đã ngồi đủ lâu để nhóm ứng dụng IIS tái chế quy trình công nhân (có vẻ như vậy).

Điều này đang trở nên thực sự khó giải quyết, vì tôi đã thực hiện rất nhiều nghiên cứu về lỗi này và đã thử nhiều giải pháp, không có may mắn. Ngoài ra, tần số ngẫu nhiên mà tại đó lỗi xảy ra đã làm cho nó rất khó để khắc phục sự cố. Bất kỳ thông tin chi tiết nào về vấn đề này hoặc các ý tưởng về các giải pháp có thể sẽ được đánh giá cao. Tôi sẵn sàng thử hầu hết mọi thứ vào thời điểm này.

+0

1) Bạn có thể đính kèm trình gỡ rối vào một trong các máy ảo thử nghiệm của mình và làm cho máy bị lỗi không? 2) Bạn đang sử dụng DLR? Nhìn qua nguồn và tài liệu BCL, có vẻ như tên loại được liên kết với các hoạt động động. Hoặc có lẽ đó là MVC của việc sử dụng DLR? –

+0

Bạn có thể kiểm tra phiên bản Microsoft.CSharp.dll nào được sử dụng (xác định đường dẫn bằng công cụ như procexp), mở nó bằng công cụ như .NET Reflector và kiểm tra phương thức tĩnh BinaryOperation không? Đó có thể là một vấn đề phiên bản (trình biên dịch dự kiến ​​một phiên bản mới hơn của Microsoft.CSharp.dll) –

+0

Bạn có đang sử dụng các tính năng ngôn ngữ động của C#? Và dù sao nó trông giống như một CLR bị hỏng. –

Trả lời

0

Try Forest Cheng Answer:

Phiên bản nào .NET Framework của bạn là? Thành phần thời gian chạy ASP.NET MVC 3 yêu cầu .NET Framework phiên bản 4 và Visual Studio 2010 hoặc Visual Web Developer 2010 Express. Muốn biết thêm thông tin, xin xem ASP.NET MVC 3 Release Notes.

Lỗi trình biên dịch CS0656 có thể được gây ra bởi các vấn đề sau:

  1. cài đặt của bạn trong thời gian chạy ngôn ngữ chung là tham nhũng.

  2. Bạn có tham chiếu đến một hội đồng xác định loại cũng được tìm thấy trong thời gian chạy ngôn ngữ chung. Tuy nhiên, loại lắp ráp của bạn không được định nghĩa theo cách trình biên dịch C# mong đợi.

Vì vậy, hãy kiểm tra tham chiếu của bạn để đảm bảo rằng bạn đang sử dụng đúng phiên bản thời gian chạy ngôn ngữ chung.

0

Chúng tôi được sử dụng để có những lỗi biên dịch xảy ra ngẫu nhiên trở lại trong ngày một thời gian dài trước đây với .net 1 và xa hơn nữa. Điều này yêu cầu xóa nội dung của thư mục asp.net tạm thời và tìm các dll giả mạo khác đang treo xung quanh, ngay cả bên trong bộ nhớ cache của phòng thu trực quan. Nói chung, xóa thư mục asp.net tạm thời sẽ làm điều đó.

Đảm bảo bạn tìm tất cả các dll - thư mục bin quá rõ ràng và nhớ rằng các dll được thực thi từ thư mục bóng.Đó là lý do tại sao tôi nhớ lại (cũng từ một bộ nhớ xa) rằng có một kết nối đến appdomain mặc định mà assembly được nạp vào, đặc biệt nếu bạn sau đó tải "cùng một assembly" nhưng từ một vị trí tệp khác.