ASP.NET de Base 1.1 fonctionne très bien en local, mais lors de la publication d'Azur dit “Une erreur est survenue 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:
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 est:
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"
}
}
- Il est possible que vous utilisez une version différente de l' .NET SDK Azure que vous êtes en cours d'exécution localement. Envisager l'ajout d'un mondial.fichier json pour votre projet de pins le SDK à une version spécifique. docs.microsoft.com/en-us/dotnet/articles/core/tools/...
- Merci pour l'astuce Shaun! Mon modèle n'est pas venu avec une approche globale.fichier json, j'ai donc créé un et de le mettre dans la solution du dossier racine. J'ai essayé un couple de différents numéros de version du SDK (1.1.0 et 1.1.0-rtm-22752) mais je ne pense pas qu'il ait eu un quelconque effet. Rien ne s'est passé. Peut-être que je suis absent quelque chose?
- Aussi, comme l'autre jour, j'ai patiemment re-créé ce que j'ai fait hier dans un tout nouveau VS 2017 RC3 modèle pour 1.1.0 (qui est différent d'avant, ils ont retiré le dossier src et il semble beaucoup plus propre). Je l'ai eu pour le même debug état de fonctionner comme avant, mais sur publier, une fois encore, il ne fonctionne pas. Je ne crois Azure manque de quelque chose mais je ne sais pas comment faire pour l'obtenir il.
- Ce SDK version exécutez-vous localement. Essayez
dotnet --version
à trouver à partir de la ligne de commande. Ensuite, utilisez cette version dans votre global.json et coller votre global.fichier json dans votre question. - On dirait qu'il est la version 1.1.0, je l'ai collé dans la question de mon global.json.
- Pour mettre à jour correctement votre
global.json
, vous devez ajouter le numéro de version complet. Par exemple, sur ma machinedotnet --version
sorties1.0.0-rc3-004517
et monglobal.json
version
propriété comprend l'ensemble de ce numéro de version. - Pour moi, la version complète est 1.1.0, avoir un regard sur ma capture d'écran: imgur.com/a/b1qAz
- C'est qu'à partir de l'exécution
dotnet --version
à partir de la ligne de commande? Quel système d'exploitation êtes-vous en cours d'exécution localement? - Ouais c'est de courir à partir de la ligne de commande. Je suis sur Windows 10 à la maison.
- Avez essayé d'ajouter d'exécution?
"runtimes": { "win10-x86": {}, "win10-x64": {}, "win7-x64": {},"win7-x86": {} }
- Salut Tom Soleil, j'ai essayé d'ajouter ce que vous avez suggéré dans le monde.json, en vain 🙁 je suis même allé aussi loin que la suppression de l'application web dans Azure et la création d'une nouvelle marque à partir de zéro, dans le cas où il n'y avait pour une raison quelconque vieux .dll assis autour, et je suis toujours la même erreur...
- Attendez, je crois que cela a fonctionné! Re-création d'une nouvelle Azure Web App fait le tour. La nouvelle erreur est que j'avais une variable d'environnement manquantes (comme c'était une nouvelle application web et je n'avais pas encore créé). Après je l'ai installé, il était bien. Donc mon hypothèse au sujet de la précédente application web étant en quelque sorte foiré étaient correctes je pense... en tout cas, merci pour l'aide de tous! Woo!
- Je vous invite à passer de 20 minutes à taper vos propres réponses en tant que post-mortem. Il serait intéressant pour moi de lire, de savoir exactement ce qui s'est passé.
- J'ai écrit un bref récapitulatif de ce qui a fait et n'a pas de travail, et ce que j'ai appris 🙂 Merci encore à tous pour votre aide. Je suis tellement content qu'il soit enfin de travail 😀
Vous devez vous connecter pour publier un commentaire.
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 la définition de la
.UseSetting("detailedErrors", "true")
et.CaptureStartupErrors(true)
actions dans votre Programme.cs fichier.Pour ASP.NET Core 1.x
(2018/07) mise à Jour pour ASP.NET de Base 2.1
.UseSetting("detailedErrors", [env-setting])
et.CaptureStartupErrors([env-setting])
Voir docs.microsoft.com/en-us/aspnet/core/fundamentals/configurationvar environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
Web.config
(voir docs.microsoft.com/en-us/aspnet/core/host-and-deploy/... ) ou manuellement sur le serveur par: stackoverflow.com/a/41551429/7840778Se 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 pour .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éé un? 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.
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
dotnet --version
.Encore une fois merci pour l'aide de tous!
J'ai eu le même problème. Tout simplement pas déployé à Azure, je suis avec mon local de la machine en tant que serveur et l'héberger dans IIS.
Et cela a été résolu en changeant le web.config.
Premier ensemble
stdoutLogEnabled = "true"
Alors assurez-vous
stdoutLogFile=".\logs\stdout" />
ce dossier existe.Et redémarrez IIS, vous pouvez trouver le véritable problème dans le fichier log.
SUPPRIMER toutes les dll de wwwroot/your_application_folder, puis copiez tous de publier des fichiers de sortie&dossiers.
Le problème se produit lorsque les NUGETS de mise à jour auto. Si vous ne nettoyez pas les fichiers existants sous wwwroot/your_application_folder IIS donne l'erreur ci-dessus.
Nettoyer et reconstruire fixe tout.
Question est probablement dupliqué - veuillez vous référer à ASP.NET de Base de l'hébergement de 500 erreur interne du serveur.
Réponse rapide:
Vous devez définir:
stdoutLogEnabled="true"
etstdoutLogFile=".\logs\stdout"
. Aussi, vous devez créerlogs
dossier manuellement.Dans mon cas, c'était parce que j'étais en train de publier les secrets de l'utilisateur pour une utilisation avec Fabook OAuth. Je sais que c'est un très de la situation spécifique de la réponse, mais OAuth semble assez courante de nos jours. Les Secrets des utilisateurs, il s'avère, ne sont pas destinés à être publiés. Qui savait.
Donc pour tester cela j'ai modifié temporairement le code suivant dans le 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 le contrôle de source.
Avant
Après
Puis il a travaillé.
Dans Mon cas, c'était parce que j'étais en essayant d'obtenir certaines données au Démarrage, et dbcontext n'a pas été mis à jour dans un environnement de production.
Changé ma ConnectionString pour la Production et lancé la mise à Jour de la Base de données, et le problème est résolu.