50 votes

ASP.NET Core 1.1 fonctionne correctement localement, mais lors de la publication dans Azure, il indique "Une erreur s'est produite lors du démarrage de l'application."

J'ai été l'élaboration d'un ASP.NET Base web app, largement basé sur le modèle MVC fournies dans Visual Studio 2017 RC2. Il fonctionne très bien en local en mode debug, mais quand j'essaie de le publier sur un Azure web hébergé application, j'obtiens cette erreur:

enter image description here

Une erreur s'est produite lors du démarrage de l'application.

.NET Core X86 v4.1.1.0 | Microsoft.AspNetCore.L'hébergement de version 1.1.0-rtm-22752 | Microsoft Windows 6.2.9200

J'ai essayé de réglage stdoutLogEnabled="true" dans le web.fichier de config, mais il ne semble pas avoir d'effet, l'erreur est la même.

Mise à jour:

Avec un peu d'aide, j'ai réussi à récupérer le journal, et il dit:

Application startup exception: System.TypeLoadException: Could not load type 'System.IO.File' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.    
   at Microsoft.Extensions.DependencyModel.FileWrapper.OpenRead(String path)
   at Microsoft.Extensions.DependencyModel.DependencyContextLoader.LoadEntryAssemblyContext(IDependencyContextReader reader)
   at Microsoft.Extensions.DependencyModel.DependencyContextLoader.Load(Assembly assembly)    
   at Microsoft.Extensions.DependencyModel.DependencyContext.Load(Assembly assembly)    
   at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.DiscoverAssemblyParts(String entryPointAssemblyName)    
   at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services)    
   at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services)    
   at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services)    
   at Bla.Api.Startup.ConfigureServices(IServiceCollection services) in C:\Users\user\Source\Workspaces\Bla\Bla.Api\src\Bla.Api\Startup.cs:line 73
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

Hosting environment: Production    
Content root path: D:\home\site\wwwroot    
Now listening on: http://localhost:1264    
Application started. Press Ctrl+C to shut down.

La ligne de code, il se réfère à la ligne 73:

services.AddMvc();

Mise à jour:

Mon global.fichier json ressemble à ceci (où Bla.L'Api est le nom du projet, et le fichier se trouve dans la solution de dossier racine).

{
  "projects": [ "Bla.Api" ],
  "sdk": {
    "version": "1.1.0"
  }
}

132voto

Steveland83 Points 3253

Depuis de nombreux problèmes différents peuvent causer cette page d'erreur, je peux vous recommandons fortement de celle-ci afin d'en déterminer la cause, rapidement et facilement, sans la lutte d'Azur (ou de tout serveur/plate-forme que ce soit), pour obtenir les journaux.

Vous pouvez activer extrêmement utile développeur amicale des messages d'erreur au démarrage par le réglage de l' .UseSetting("detailedErrors", "true") et .CaptureStartupErrors(true) des actions dans votre Programme.cs fichier.

Pour ASP.NET Core 1.x

public static void Main(string[] args)
{
  var host = new WebHostBuilder()
      .UseKestrel()
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseSetting("detailedErrors", "true")
      .UseIISIntegration()
      .UseStartup<Startup>()
      .CaptureStartupErrors(true)
      .Build();

  host.Run();
}

(2018/07) mise à Jour pour ASP.NET de Base 2.1

public class Program  
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .CaptureStartupErrors(true)
            .UseSetting("detailedErrors", "true")
            .UseStartup<Startup>()
            .Build();
}
  • Ces paramètres doivent être retirés dès que votre dépannage est terminée, afin de ne pas exposer votre demande à des attaques malveillantes.

8voto

Pete Points 137

Se connecter via un client sftp et supprimer tout le site/wwwroot dossier manuellement. Republier

J'ai eu que des problèmes depuis que j'ai migré une application que j'ai hébergé sur Azure .net de base à partir de MVC 4.

À un moment, il y a quelques semaines, j'ai été incapable de mettre un projet à exécuter après avoir réussi à publier. J'ai même essayé deux fois pour effacer la totalité de l'Application de Service de profil et de le recréer avec le même nom. Cependant, lorsque j'ai ajouté un " 2 " pour l'Application du nom de Service (pour créer un jamais utilisé le service de l'app) publication exactement le même projet avec 0 changements a parfaitement fonctionné. Que fait exactement un supprimer le faire si je peux publier avec succès à une nouvelle application de service mais pas supprimé et recréé? Supprimer des Fichiers Existants À Destination a été vérifiée dans chacune de publier, qui n'a pas tout faire non plus.

J'ai eu la même erreur aujourd'hui, comme illustré dans l'OP dans mon #2 site. Elle a eu lieu après la tentative de mettre à jour un certain nombre de asp packages nuget et re-déployer. Vraiment ne pas vouloir d'avoir à passer à l'itération myApp3 de mon service app, j'ai décidé d'utiliser le FTP de l'information fournie dans l'azur de l'aperçu de la page. Je navigue de Site/wwwroot et supprimé tout à l'intérieur de la client FTP. J'ai alors publié l'application, et cela a fonctionné. Je ne peux que conclure que "Supprimer la case" ne fonctionne pas correctement.

6voto

derf26 Points 411

Merci à tous pour vos suggestions. La seule chose qui a travaillé dans la fin est bien de le supprimer Azure web app que je ne pouvais pas publier, et la création d'une nouvelle marque. Je suppose que peut-être certains de la .dll à partir de la précédente environnement d'exécution étaient toujours traîner ou de ne pas être mis à jour... Quoi qu'il en soit, la re-création, il a travaillé. J'espère ne pas l'obtenir à nouveau cette erreur, parce que vous ne pouvez pas vraiment faire ce genre de trucs dans la production.

D'apporter des modifications au mondial.fichier json ne semble avoir aucun effet.

La création d'une toute nouvelle API à partir d'un modèle qui n'a pas aidé non plus, le problème a été avec l'Azur de l'Application Web elle-même, comme tout ce qui a été en cours d'exécution fine localement.

Un autre astuce utile est d'ajouter les journaux (et les "logs" de fichier dans la racine) comme par l'autre réponse. Qu'au moins m'a orienté dans la bonne direction. Aussi la vérification de votre runtime avec l' dotnet --version.

Encore une fois merci pour l'aide de tous!

5voto

wtf512 Points 1028

J'ai le même problème. Non déployé sur Azure, j'utilise mon ordinateur local en tant que serveur et l'héberge dans IIS.

 An error occurred while starting the application.

.NET Core X64 v4.1.1.0    |   Microsoft.AspNetCore.Hosting version 1.1.1    |    Microsoft Windows 10.0.14393    |   Need help?
 

Et cela a été résolu en changeant web.config.

Premier ensemble stdoutLogEnabled = "true"

Assurez-vous ensuite que ce dossier existe à stdoutLogFile=".\logs\stdout" /> .

Et puis redémarrez IIS, vous pouvez trouver le vrai problème dans le fichier journal.

3voto

Fuat Points 13

Supprimez toutes les dll existantes de wwwroot / your_application_folder, puis copiez tous les fichiers et dossiers de sortie de publication.

Le problème se produit lorsque le NUGETS se met à jour automatiquement. Si vous ne nettoyez pas les fichiers existants sous wwwroot / votre_application_folder, IIS génère l'erreur ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X