ASP.NET Core 1.1 fonctionne bien localement mais lors de la publication sur Azure dit "une erreur s'est produite lors du démarrage de l'application."

j'ai développé une ASP.NET application Web de base, basée en grande partie sur le modèle MVC fourni dans Visual Studio 2017 RC2. Il fonctionne très bien en mode de débogage local, mais quand j'essaie de le publier sur une application web hébergée par Azure, 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.Version d'hébergement 1.1.0-rtm-22752 / Microsoft Windows 6.2.9200

j'ai essayé la configuration de stdoutLogEnabled="true" sur le web.fichier de configuration, mais il semble n'avoir aucun 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:UsersuserSourceWorkspacesBlaBla.ApisrcBla.ApiStartup.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:homesitewwwroot    
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 la le fichier se trouve dans le dossier racine de la solution).

{
  "projects": [ "Bla.Api" ],
  "sdk": {
    "version": "1.1.0"
  }
}
42
demandé sur derf26 2017-01-29 01:25:48

8 réponses

puisque beaucoup de problèmes différents peuvent causer cette page d'erreur, je peux fortement recommander ce qui suit afin de déterminer la cause racine rapidement et facilement, sans lutter Azure (ou n'importe quel serveur/plate-forme pour cette matière) pour obtenir des journaux.

Vous pouvez activer extrêmement utile messages d'erreur conviviaux pour les développeurs au démarrage en mettant le .UseSetting("detailedErrors", "true") et .CaptureStartupErrors(true) actions dans votre Programme.cs fichier.

pour ASP.NET noyau 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 noyau 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 supprimés dès que votre dépannage est terminé afin de ne pas exposer votre application à des attaques malveillantes.
113
répondu Steveland83 2018-07-20 14:54:35

connectez-vous via un client sftp et supprimez tout ce qui se trouve dans le dossier site/wwwroot manuellement. Republier

Je n'ai eu que des problèmes depuis que j'ai migré une application hébergée sur Azure vers .net core à partir de MVC 4.

il y a quelques semaines, j'ai été incapable de faire démarrer un projet après une publication réussie. J'ai même essayé à deux reprises de supprimer tout le profil du Service App et de le recréer avec le même nom. Toutefois, lorsque j'ai ajouté un "2" au Nom du Service App (pour créer un service app jamais utilisé auparavant) publier exactement le même projet avec 0 modifications a fonctionné parfaitement. Que fait exactement un delete si je peux publier avec succès à un nouveau service app mais pas un supprimé et recréé? Supprimer les fichiers existants à Destination a été vérifié dans chaque publication, qui n'a rien fait non plus.

j'ai eu la même erreur aujourd'hui que sur la photo dans L'OP de mon site n ° 2. Cela s'est produit après avoir essayé de mettre à jour un certain nombre de paquets asp nuget. et re-déployer. Vraiment ne voulant pas avoir à passer à l'itération myApp3 de mon service app, j'ai décidé d'utiliser les informations FTP fournies dans la page Aperçu azure. J'ai navigué vers le Site / wwwroot et j'ai effacé tout ce qui se trouvait à l'intérieur du client FTP. J'ai ensuite publié la demande, et ça a marché. Je ne peux que conclure que "Supprimer la case" ne fonctionne pas correctement.

8
répondu Pete 2017-02-05 23:34:52

Merci à tous pour vos suggestions. La seule chose qui a fonctionné à la fin cependant est la suppression de cette application Web Azure que je ne pouvais pas publier, et la création d'un tout nouveau. Je suppose que peut-être certains de la .les dlls de l'environnement d'exécution précédent traînaient toujours ou n'étaient pas mis à jour... Quoi que ce soit, le recréer a fonctionné. J'espère ne pas avoir cette erreur encore une fois, parce que vous ne pouvez pas vraiment faire ce genre de choses dans la production.

apporter des modifications à la mondial.le dossier json ne semblait pas avoir d'effet.

créer une API entièrement nouvelle à partir d'un modèle n'a pas aidé non plus, le problème était avec L'application Web Azure elle-même, car tout allait bien localement.

une autre astuce très utile a été d'ajouter la journalisation (et le fichier" logs " dans la racine) selon l'autre réponse. Cela m'a au moins montré la bonne direction. Vérifiez aussi votre runtime avec dotnet --version.

Merci encore pour l'aide de tout le monde!

5
répondu derf26 2017-01-30 18:11:26

j'ai le même problème. Juste pas déployé à Azure, j'utilise ma machine locale comme 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 le web.config.

Premier set stdoutLogEnabled = "true"

alors assurez-vous stdoutLogFile=".\logs\stdout" /> ce dossier existe.

et puis redémarrer IIS, vous pouvez trouver le vrai problème dans le fichier log.

4
répondu wtf512 2017-03-27 03:27:10

la Question est probablement dupliqué - reportez-vous à ASP.NET de Base de l'hébergement de 500 internal server error.



Réponse rapide:

Vous devez définir: stdoutLogEnabled="true" et stdoutLogFile=".\logs\stdout". Aussi, vous devez créer logs le dossier manuellement.

1
répondu Lukasz Makowej 2017-05-23 12:18:26

DELETE toutes les dll existantes à partir de wwwroot / your_application_folder, puis copier tous les fichiers de sortie de publier & dossiers.

le problème se produit lorsque les NUGETS se mettent à jour eux-mêmes. Si vous ne nettoyez pas les fichiers existants sous wwwroot/your_application_folder IIS affiche l'erreur ci-dessus.

1
répondu Shortly FD 2017-08-04 09:42:31

dans mon cas, c'était parce que j'essayais de publier des secrets d'utilisateur à utiliser avec Fabook OAuth. Je sais que c'est une réponse très spécifique à une situation, mais outh semble assez commun de nos jours. Il s'avère que les secrets d'utilisateur ne sont pas destinés à être publiés. Qui savait.

donc pour tester ceci j'ai Temporairement changé le code suivant au démarrage.cs. Ces données ne doit pas être codé en dur comme faisant partie des meilleures pratiques, que ça finirait en texte clair dans la source contrôle.

Avant

    app.UseFacebookAuthentication(new FacebookOptions()
    {
        AppId = Configuration["Authentication:Facebook:AppId"],
        AppSecret = Configuration["Authentication:Facebook:AppSecret"]
    });

Après

    app.UseFacebookAuthentication(new FacebookOptions()
    {
        AppId = "0000000000000", // your value
        AppSecret = "0000000000000000000000000000000" // your value
    });

alors ça a marché.

0
répondu Dave 2017-08-13 05:20:31

dans mon cas, c'était parce que j'essayais d'obtenir quelques données au démarrage, et dbcontext n'a pas été mis à jour dans l'environnement de production.

J'ai changé ma chaîne de connexion en Production et exécuté la mise à jour de la base de données, et le problème est résolu.

0
répondu mesut 2017-09-12 07:24:37