Następujący błąd pojawia się sporadycznie (pozornie losowo) w mojej aplikacji internetowej. Używamy Windows Server 2008R2, IIS 7.5, MVC3, .NET 4.5.Okresowe wyświetlanie błędu ASP.NET CS0656: Brak wymaganego elementu kompilatora
To ten sam błąd za każdym razem: CS0656: Brakujące kompilatora wymaganego członka 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'
W przypadku wystąpienia tego błędu, może brać niczego od A zrestartuj pulę aplikacji, ponownie zainstaluj naszą aplikację, aby ją naprawić.
Błąd występuje na zupełnie nowych obrazach maszyn wirtualnych (brak wcześniejszej instalacji naszego oprogramowania), a także na komputerach, na których wcześniej było zainstalowane nasze oprogramowanie. Błąd może wystąpić przy pierwszym uruchomieniu aplikacji lub gdy aplikacja została wystarczająco długo pozostawiona na puli aplikacji IIS do odtworzenia procesu roboczego (tak się wydaje).
To staje się naprawdę trudne, ponieważ wykonałem mnóstwo badań nad tym błędem i próbowałem wielu rozwiązań, bez powodzenia. Częstotliwość, z jaką wystąpił błąd, spowodowała, że bardzo trudno jest rozwiązać problem. Dowolny wgląd w tę kwestię lub pomysły na temat możliwych rozwiązań byłyby bardzo mile widziane. Jestem gotów wypróbować prawie wszystko w tym momencie.
1) Czy możesz dołączyć do debuggera jedną z testowych maszyn wirtualnych i spowodować awarię? 2) Czy korzystasz z DLR? Przeglądając źródło i dokumentację BCL, wydaje się, że nazwa typu jest powiązana z operacjami dynamicznymi. A może to wykorzystanie DLR przez MVC? –
Czy możesz sprawdzić, jaka wersja Microsoft.CSharp.dll jest używana (określić ścieżkę za pomocą narzędzia takiego jak procexp), otworzyć ją za pomocą narzędzia takiego jak .NET Reflector i sprawdzić, czy istnieje statyczna metoda BinaryOperation? Może to być problem z wersją (kompilator oczekuje nowszej wersji Microsoft.CSharp.dll) –
Czy używasz dynamicznych funkcji językowych C#? W każdym razie wygląda na to, że uszkodzony jest CLR. –