J'ai créé une nouvelle application avec VS 2015 RC et le modèle MVC et sans modifier aucune ligne de code, j'ai l'erreur suivante:
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
La première fois que cela m'arrive, je suis donc coincé pour le moment
J'ai eu cette situation sur le serveur de production alors que sur la machine de développement tout allait bien.
L’installation de .NET Framework 4.6 sur la machine cible a résolu le problème.
Désolé d'être en retard à la fête, mais si quelqu'un d'autre rencontre ce problème via une version TeamCity, je peux décrire ce que nous avons dû faire.
.NET 4.6 a été installé sur notre serveur de génération (mais pas sur le serveur d'applications). RunnerType était Visual Studio (sln) et l'option Visual Studio était définie sur 2015.
Cela a forcé la construction à utiliser la version 4.6 et j'avais besoin de changer l'option de Visual Studio en 2013 pour la forcer à utiliser la version 4.5.2.
Juste pour les autres personnes confrontées à cette situation:
si vous regardez dans le fichier web.config, vous vous rendrez compte que dans la balise <compilation>
, vous avez la valeur targetFramework
définie sur une version inférieure à 4.6. Toutefois, au moment de la construction, vous avez publié votre application via .NET FrameWork 4.6 ou version ultérieure (correspond à ASP.NET MVC 4.6 et versions ultérieures).
Donc, si vous changez la valeur de targetFramework
en 4.6, l’erreur se transformera en:
L'attribut 'targetFramework' fait actuellement référence à une version postérieure à la version installée du .NET Framework.
c'est la véritable erreur et vous vous en débarrasserez en installant la version appropriée de .Net FrameWork dans l'environnement de production de votre application Web.
La mise à jour du dernier .NET Framework (4.7.2) a résolu le problème. Merci à @Andrey Kovalenko pour la solution.
Mais l'erreur ne devrait pas être comme,
Je ne suis pas sûr de dire à chaque client de mettre à jour que son .NET Framework est applicable. J'ai eu ce problème en particulier sur le système d'exploitation Windows Embedded OS , uniquement dans l'environnement de production.
Existe-t-il un autre moyen de surmonter le comportement, à partir de notre base de code elle-même?
J'essaie ces solutions sans succès.
La solution pour moi était d'aller dans le pool d'applications, de passer à la version 2.0, d'exécuter le site sur le navigateur, de voir l'erreur (car la version était fausse) et de revenir à la version 4.0 et "voilà", je l'ai eu, le site Web est ouvert.
Dans mon cas, je n’ai pas accès au IIS lui-même et j’avais ce problème lorsque j’utilisais une seule méthode qui n’a rien de spécial, mais uniquement des éléments de .net 2.
La solution: j'ai extrait cette méthode et créé une bibliothèque de classes avec .net 2.0 et cela fonctionne.
Dans mon cas, j'avais une installation .NET corrompue sur Windows Server 2012 R2. Je devais installer une version plus récente de .NET (v4.7.1) et le site fonctionne maintenant.
J'ai rétrogradé 4.6.x à 4.5.2 et cela a bien fonctionné.
Peut-être que c'est trop tard, mais j'ai eu le même problème et résolu comme ci-dessous. J'utilise Visual Studio 2015, la configuration compilation sur web.config pointe sur .NET FrameWork 4.6 par défaut. Je ne pouvais pas modifier uniquement le fichier web.config. Si vous ne pouvez pas installer .NET FrameWork 4.6 sur le serveur et que votre application ne l'utilise pas.