swagger-ui renvoie 500 après le déploiement
fonctionne parfaitement sur ma machine, aucun problème.
mais quand je me déploie dans notre environnement de test - je reçois le message suivant
500 : { "Message": "Une erreur s'est produite."} / api / swagger/docs / v1
Le déploiement est à default web site/api
je suppose qu'il a quelque chose à faire avec le baseUrl ou quelque chose comme ça, mais je n'ai aucune idée de même par où commencer.
mes routes fonctionnent bien dans le projet - je peux appeler tous mes paramètres webapi et ils répondent correctement.
toute aide serait grandement apprécié
5 réponses
lors du débogage, j'utilisais la config de débogage (que J'avais générée pour Xmlcomments: Properties -> build tab -> Output -> XML Documentation File)
Je n'avais pas fait cela pour ma configuration de libération (duh... maintenant tout fonctionne
Swashbuckle cache le vrai message d'erreur en raison de votre paramétrage customErrors dans web.config. Si vous définissez customErrors à off, vous devriez obtenir un meilleur message d'erreur.
<system.web>
<customErrors mode="Off"/>
</system.web>
comme indiqué dans la réponse acceptée, vous devez vous assurer que la sortie du fichier de documentation XML est dans bin et non bin\Debug ou bin\Release (vérifiez ceci pour toutes les configurations de construction).
j'ai quand même reçu la réponse 500 parce que j'utilise plusieurs fichiers de documentation XML. Dans ma mise en œuvre SwaggerConfig , j'ai inclus les fichiers de documentation XML de deux projets (le WebApi projet lui-même et une bibliothèque de classe qui est référencée par le projet WebApi):
c.IncludeXmlComments(string.Format(@"{0}\bin\MyWebApiProject.xml", System.AppDomain.CurrentDomain.BaseDirectory));
c.IncludeXmlComments(string.Format(@"{0}\bin\ReferencedProject.xml", System.AppDomain.CurrentDomain.BaseDirectory));
le fichier de documentation XML du projet WebApi a été publié correctement dans le dossier bin du site, mais pas le fichier de documentation XML du projet référencé (même s'il figure dans le dossier bin du projet compilé ).
vous devez donc modifier le fichier du projet WebApi (.csproj) dans un éditeur de texte et ajoutez les sections suivantes en bas (remplacer ReferencedProject ):
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\ReferencedProject\bin\ReferencedProject.xml" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
voir comment inclure des fichiers supplémentaires en utilisant les paquets de déploiement web VS2010? pour une explication complète.
le problème est que l'exécution de dotnet publish
avec -r Release
ne produit pas de fichier XML. Cependant, dotnet publish
avec -r Debug
produit effectivement le fichier. Cela explique pourquoi les gens ne sont confrontés à ce problème que lorsqu'ils se déploient dans des environnements autres que locaux, puis se donnent des coups de pied lorsque l'exception "find the" ne se produit que sur prod.(C'est la version) afin de reportoduce, il suffit d'exécuter ces commandes localement et de voir le répertoire de sortie et vous devriez voir le problème.
(mise à jour) le correctif pour moi était d'aller réellement dans .csproj fichier et ajouter une ligne pour s'assurer que le fichier a été copié toujours. Diff indiqué ci-dessous
la réponse acceptée devrait être la première chose que vous essayez.
cependant, j'ai ma sortie XML définie pour aller à App_Data\ et avoir mon Swashbuckle configuré pour lire à partir de ce répertoire, donc, il n'a pas d'importance de quelle façon il est construit: les fichiers xml vont 'être là'. Néanmoins, j'ai toujours l'erreur...
j'ai trouvé plus à forums de MSDN réponse de @enough2012:
sélectionnez " Supprimer des fichiers supplémentaires à destination "dans les" Options de publication de fichiers "dans le volet" Paramètres " de la boîte de dialogue Publier.
a fonctionné comme un charme!