2015-08-24 13 views
38

Ich habe Swagger UI in meiner Anwendung integriert.Kann nicht lesen von Dateiproblem in Swagger UI

Wenn ich versuche, die swagger UI zu sehen, bekomme ich die Dokumentation der API schön, aber nach einiger Zeit zeigt es ein Fehlersymbol auf der Schaltfläche.

Die Fehlermeldung ist wie folgt:

[{ "Level": "Fehler", "message": "Kann nicht aus der Datei http://MYIP/swagger/docs/v1 lesen"}]

I Ich bin mir nicht sicher, was es verursacht. Wenn ich es aktualisiere, funktioniert es und zeigt Fehler nach einigen Sekunden an.

Antwort

59

Ich rate "http://MYIP/swagger/docs/v1" ist nicht öffentlich zugänglich.

Standardmäßig verwendet swagger ui einen Online-Validator: online.swagger.io. Wenn es nicht auf Ihre Swagger-URL zugreifen kann, wird diese Fehlermeldung angezeigt.

Mögliche Lösungen:

  1. Disable-Validierung:

    config.EnableSwagger().EnableSwaggerUi(c => c.DisableValidator());

  2. Machen Sie Ihre Website öffentlich zugänglich

  3. Gastgeber der Prüfer vor Ort:

Sie können den Validator Suche von: https://github.com/swagger-api/validator-badge#running-locally

Sie auch

config.EnableSwagger().EnableSwaggerUi(c => c.SetValidatorUrl(<validator_url>));

+2

Können Sie mir bitte sagen, in welcher Datei könnten wir konfigurieren Ist der Validator deaktiviert? – shashi009

+3

Das hängt davon ab, welches Framework Sie verwenden. Zum Beispiel mit Web Api 2 in Startup.cs: 'public void Konfiguration (IAppBuilder app) { ... HttpConfiguration config = neue HttpConfiguration(); SwaggerConfig.Registrieren (config); } ' Dann könnte der Validator in SwaggerConfig.cs konfiguriert werden –

+0

Für die nächste Person - wenn ich heruntergeladen und bekam das Validator-Badge lokal ausgeführt, fand ich heraus, dass mein Swagger Json gültig war. Der Fehler war, weil mein swagger.json nicht entfernt verfügbar ist (was ich [und wahrscheinlich Sie] will). –

10

Um die akzeptierte Antwort ergänzen sich die Position des Prüfers sagen, müssen swaggerui ... ich nur eine uncommented Linie in die SwaggerConfig.cs. Ich wollte nur den roten Fehler auf der Hauptwucherungsseite beseitigen, indem ich den Validator deaktiviere.

// By default, swagger-ui will validate specs against swagger.io's online validator and display the result 
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the 
// feature entirely. 
//c.SetValidatorUrl("http://localhost/validator"); 
c.DisableValidator(); 
+1

Danke fürs Teilen! –

+0

Wo finde ich Swagger Config? –

+0

Ich benutze das Swashbuckle NuGet Paket für Swagger und SwaggerConfig.cs wird unter den App_Start Ordner gestellt. –

1

Einstellung this.model.validatorUrl = null; in dist/swagger-ui.js für mich gearbeitet ..

// Default validator 
if(window.location.protocol === 'https:') { 
    //this.model.validatorUrl = 'https://online.swagger.io/validator'; 
    this.model.validatorUrl = null; 
} else { 
    //this.model.validatorUrl = 'http://online.swagger.io/validator'; 
    this.model.validatorUrl = null; 
}