Utworzyłem nową aplikację z VS 2015 RC i szablonem MVC i bez modyfikowania żadnej linii kodu mam ten błąd:
Method not found: '!!0[] System.Array.Empty()'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.]
SAASApp.BundleConfig.RegisterBundles(BundleCollection bundles) in C:\Proyectos\SAASApp\SAASApp\App_Start\BundleConfig.cs:29
SAASApp.MvcApplication.Application_Start() in C:\Proyectos\SAASApp\SAASApp\Global.asax.cs:18
[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +483
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +350
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +305
[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +661
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +96
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189
Pierwszy raz mi się to zdarza, więc w tej chwili utknąłem
c#
asp.net
asp.net-mvc
asp.net-mvc-3
Luis Valencia
źródło
źródło
Odpowiedzi:
Miałem taką sytuację na serwerze produkcyjnym, podczas gdy na komputerze deweloperskim wszystko było w porządku.
Zainstalowanie .NET Framework 4.6 na komputerze docelowym rozwiązało problem.
źródło
Przepraszam, że spóźniłem się na imprezę, ale na wypadek, gdyby ktoś inny dostał ten problem poprzez kompilację TeamCity, mogę opisać, co musieliśmy zrobić.
NET 4.6 została zainstalowana na naszym serwerze kompilacji (ale nie na serwerze aplikacji), a RunnerType to Visual Studio (sln), a opcja Visual Studio została ustawiona na 2015.
To zmusiło kompilację do korzystania z wersji 4.6 i musiałem zmienić opcję programu Visual Studio na 2013, aby wymusić na kompilacji korzystanie z wersji 4.5.2
źródło
Tylko dla innych w tej sytuacji:
jeśli zajrzysz do pliku web.config, zauważysz, że w
<compilation>
tagu masztargetFramework
ustawioną wartość na wersję poniżej 4.6. ale w rzeczywistości w czasie kompilacji aplikacja została opublikowana za pośrednictwem platformy .NET FrameWork w wersji 4.6 lub nowszej (odpowiada ASP.NET MVC 4.6 i nowszych).Więc jeśli zmienisz wartość
targetFramework
na 4,6, błąd zmieni kształt na:to jest prawdziwy błąd i pozbędziesz się go instalując odpowiednią wersję .Net FrameWork w środowisku produkcyjnym swojej aplikacji internetowej.
źródło
Zaktualizowanie programu .NET Framework do najnowszej wersji (4.7.2) rozwiązało problem. Podziękowania dla @Andrey Kovalenko za rozwiązanie.
Ale czy błąd nie powinien wyglądać następująco:
Nie jestem pewien, czy mówienie każdemu klientowi o aktualizacji ich .NET Framework ma zastosowanie. Miałem ten problem szczególnie w systemie Windows Embedded OS , tylko w środowisku produkcyjnym.
Czy istnieje inny sposób na pokonanie tego zachowania, z naszej bazy kodu?
źródło
Próbuję tego rozwiązania bez powodzenia.
Rozwiązaniem dla mnie było przejście do puli aplikacji, przejście na 2.0, uruchomienie strony w przeglądarce, zobaczenie błędu (bo wersja jest zła) i powrót do 4.0 i "voila", mam to, strona otwarta.
źródło
Może za późno, ale mam ten sam problem i naprawiłem jak poniżej. Używam Visual Studio 2015, kompilacja konfiguracji na web.config wskazuje domyślnie na .NET FrameWork 4.6. Nie mogłem po prostu edytować tylko w pliku web.config. Jeśli nie możesz zainstalować .NET FrameWork 4.6 na serwerze, a Twoja aplikacja go nie używa.
źródło
W moim przypadku mam uszkodzoną instalację .NET na moim Windows Server 2012 R2. Musiałem zainstalować nowszą wersję .NET (v4.7.1) i strona działa teraz.
źródło
W moim przypadku nie mam dostępu do samego IIS i miałem ten problem, gdy używałem jednej metody, która nie ma nic specjalnego tylko z .net 2.
Rozwiązanie: wyodrębniłem tę metodę i utworzyłem bibliotekę klas z .net 2.0 i działa.
źródło
Obniżyłem 4.6.x do 4.5.2 i działało dobrze.
źródło