Ich habe eine neue App mit VS 2015 RC und der MVC-Vorlage erstellt und ohne Änderung einer Codezeile habe ich folgenden Fehler:
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
Das erste Mal passiert es mir, also stecke ich im Moment fest
Ich hatte diese Situation auf dem Produktionsserver, während auf der Entwicklungsmaschine alles in Ordnung war.
Das Installieren von .NET Framework 4.6 auf dem Zielcomputer hat das Problem behoben.
Es tut mir leid, dass ich zu spät zur Party komme, aber falls jemand anderes dieses Problem über einen TeamCity-Build bekommt, kann ich beschreiben, was wir zu tun hatten.
.NET 4.6 wurde auf unserem Build-Server installiert (jedoch nicht auf dem Anwendungsserver), und der RunnerType war Visual Studio (sln), und die Visual Studio-Option wurde auf 2015 festgelegt.
Dies zwang den Build zur Verwendung von 4.6, und ich musste die Visual Studio-Option auf 2013 ändern, um den Build zur Verwendung von 4.5.2 zu zwingen
Nur für andere, die mit dieser Situation konfrontiert sind:
wenn Sie in die Datei web.config schauen, werden Sie feststellen, dass in <compilation>
Tag Sie haben den Wert targetFramework
auf eine Version unter 4.6 gesetzt. Tatsächlich haben Sie Ihre Anwendung jedoch zum Zeitpunkt der Erstellung über .NET FrameWork 4.6 oder höher veröffentlicht (entspricht ASP.NET MVC 4.6 und höher).
Wenn Sie also den Wert von targetFramework
in 4.6 ändern, ändert sich die Form des Fehlers in:
Das Attribut 'targetFramework' verweist derzeit auf eine Version, die älter als die installierte Version von .NET Framework ist.
dies ist der eigentliche Fehler. Sie können ihn beheben, indem Sie die entsprechende Version von .Net FrameWork in der Produktionsumgebung Ihrer Web-App installieren.
Durch Aktualisieren des .NET Framework auf das neueste (4.7.2) wurde das Problem behoben. Vielen Dank an @Andrey Kovalenko für die Lösung.
Aber sollte der Fehler nicht so sein,
Ich bin mir nicht sicher, ob es für jeden Kunden relevant ist, sein .NET Framework zu aktualisieren. Ich hatte dieses Problem vor allem bei Windows Embedded OS installierten Systemen, nur in der Produktionsumgebung.
Gibt es eine andere Möglichkeit, das Verhalten von unserer Codebasis aus zu überwinden?
Ich versuche diese Lösung ohne Erfolg.
Die Lösung für mich war, in den Anwendungspool zu gehen, auf 2.0 umzuschalten, die Site im Browser auszuführen, den Fehler zu sehen (weil die Version falsch ist) und wieder auf 4.0 umzuschalten und "voilà", ich habe es verstanden, die Website zu öffnen.
In meinem Fall habe ich keinen Zugriff auf IIS) und ich hatte dieses Problem, als ich eine einzelne Methode verwendete, die nichts Besonderes enthält, nur Dinge aus .net 2.
Die Lösung: Ich habe diese Methode extrahiert und eine Klassenbibliothek mit .net 2.0 erstellt und es funktioniert.
In meinem Fall hatte ich eine beschädigte .NET-Installation auf meinem Windows Server 2012 R2. Ich musste eine neuere Version von .NET (v4.7.1) installieren und die Site funktioniert jetzt.
Ich habe 4.6.x auf 4.5.2 heruntergestuft und es hat gut funktioniert.
Vielleicht ist es zu spät, aber ich habe das gleiche Problem wie unten behoben. Ich benutze Visual Studio 2015, die Konfiguration Kompilierung in der web.config zeigt standardmäßig auf .NET FrameWork 4.6. Ich konnte nur die Datei web.config bearbeiten. Wenn Sie .NET FrameWork 4.6 nicht auf dem Server installieren können und Ihre Anwendung es nicht verwendet.