Die sofort einsatzbereite Konfiguration funktioniert auf meinem Computer einwandfrei, überhaupt keine Probleme.
Bei der Bereitstellung in unserer Testumgebung wird jedoch die folgende Meldung angezeigt
500: {"Nachricht": "Ein Fehler ist aufgetreten." } / api / swagger / docs / v1
Die Bereitstellung erfolgt zu default web site/api
Ich vermute, es hat etwas mit der baseUrl oder so etwas zu tun, aber ich habe keine Ahnung, wo ich anfangen soll.
Meine Routen funktionieren innerhalb des Projekts einwandfrei. Ich kann alle meine Webapi-Endpunkte aufrufen und sie reagieren korrekt.
Jede Hilfe wäre sehr dankbar
quelle
Vielen Dank, dass Sie @VisualBean.
Da es für mich nicht so offensichtlich war ... wie man ... ein einfaches Bild macht.
In Projekt> Ihre Projekteigenschaften> Registerkarte Erstellen
quelle
Swashbuckle verbirgt die echte Fehlermeldung aufgrund Ihrer customErrors-Einstellung in web.config. Wenn Sie customErrors deaktivieren, sollte eine bessere Fehlermeldung angezeigt werden.
<system.web> <customErrors mode="Off"/> </system.web>
quelle
Wie in der akzeptierten Antwort angegeben, müssen Sie sicherstellen, dass sich die Ausgabe der XML-Dokumentationsdatei in bin und nicht in bin \ Debug oder bin \ Release befindet (überprüfen Sie dies für alle Build-Konfigurationen).
Ich habe immer noch die 500-Antwort erhalten, da ich mehrere XML-Dokumentationsdateien verwende. In meiner SwaggerConfig- Implementierung füge ich XML-Dokumentationsdateien aus zwei Projekten hinzu (dem WebApi-Projekt selbst und einer Klassenbibliothek, auf die das WebApi-Projekt verweist):
c.IncludeXmlComments(string.Format(@"{0}\bin\MyWebApiProject.xml", System.AppDomain.CurrentDomain.BaseDirectory)); c.IncludeXmlComments(string.Format(@"{0}\bin\ReferencedProject.xml", System.AppDomain.CurrentDomain.BaseDirectory));
Die XML-Dokumentationsdatei des WebApi-Projekts wurde korrekt im bin-Ordner der Site veröffentlicht, die XML-Dokumentationsdatei des referenzierten Projekts jedoch nicht (obwohl sie im bin-Ordner des kompilierten Projekts angezeigt wird ).
Sie müssen also die WebApi-Projektdatei (.csproj) in einem Texteditor ändern und die folgenden Abschnitte unten hinzufügen ( ReferencedProject ersetzen ):
<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>
Siehe Wie fügen Sie zusätzliche Dateien mithilfe von VS2010-Webbereitstellungspaketen ein? für eine vollständige Erklärung.
quelle
Include=bin\*.xml
, einschließlich der XML-Datei aus allen Projekten, auf die verwiesen wird, ohne dass diese explizit angegeben werden müssen. Siehe docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/…Das Problem ist, dass beim Ausführen
dotnet publish
mit-r Release
keine XML-Datei erstellt wird. Allerdings erzeugtdotnet publish
with-r Debug
tatsächlich die Datei. Dies erklärt, warum Benutzer dieses Problem nur erhalten, wenn sie in Umgebungen eingesetzt werden, die ANDERER als lokal sind, und sich dann selbst in die Knie zwingen, wenn die Ausnahme nur für Produkte gefunden wird Verzeichnis und Sie sollten das Problem sehen.(UPDATE) Das Update für mich bestand darin, in die .csproj-Datei zu gehen und eine Zeile hinzuzufügen, um sicherzustellen, dass die Datei immer kopiert wurde. Diff unten gezeigt
quelle
Die akzeptierte Antwort sollte das erste sein, was Sie versuchen.
Ich habe jedoch meine XML-Ausgabe auf App_Data \ eingestellt und mein Swashbuckle so konfiguriert, dass es aus diesem Verzeichnis liest. Es spielt also keine Rolle, auf welche Weise es erstellt wird: Die XML-Dateien werden dort sein. Trotzdem bekam ich immer noch den Fehler ...
Ich fand in den MSDN-Foren die Antwort von @ many2012:
Lief wie am Schnürchen!
quelle