2016-06-28 4 views
7

Ich habe Swagger in meiner ASP.NET Core RC1-Anwendung mit folgenden NuGet-Paketen integriert.ASP.NET Core RC1 - WebAPI Swagger Integration - "Fehler" SchemaValidationMessages

"Swashbuckle.SwaggerGen": "6.0.0-rc1-final", 
"Swashbuckle.SwaggerUi": "6.0.0-rc1-final" 

Hier ist der Code für Swagger Integration.

public void ConfigureServices(IServiceCollection services) 
    { 
     .... 
     ..... 

     //*** Configure Swagger Document Information. 
     services.ConfigureSwaggerDocument(options => 
     { 
      //*** Define incremental API version. 
      options.SingleApiVersion(new Info 
      { 
       Version = "v1", 
       Title = "TEST APIs", 
       Description = "Test API Methods", 
       TermsOfService = "", 
      }); 


      //*** Assign the API - Swagger helper document. 
      options.OperationFilter(new Swashbuckle.SwaggerGen.XmlComments.ApplyXmlActionComments(helperDocPath)); 

     }); 

     //*** Configure the Swagger schema settings. 
     services.ConfigureSwaggerSchema(options => 
     { 
      options.DescribeAllEnumsAsStrings = true; 
      options.ModelFilter(new Swashbuckle.SwaggerGen.XmlComments.ApplyXmlTypeComments(helperDocPath)); 
     }); 

     .... 
     .... 
    } 

    //**** Configure Method 

    private void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     ... 
     .... 

     //*** Add Swagger pluggins to application environment. 
     app.UseSwaggerGen(); 
     app.UseSwaggerUi(); 
    } 

Der Code generiert die Prahlerei Dokumentation während sie lokal mit Zugriff auf localhost -> "http://localhost:8080/testapiproject/swagger/ui/index.html".

Doch nach dem Code in dem Deployment Server bereitstellt ich bin immer noch das Prahlerei Dokument bekommen, aber ich bin immer „Fehler“ in den unteren, beim Anklicken es sagt,

{"schemaValidationMessages":[{"level":"error","message":"Can't read from file http://<applicationdomainname>:8080//testapiproject/swagger/v1/swagger.json"}]}. 
+0

'http: //: 8080 // testapiproject/swagger/v1/swagger.json' dieser Pfad scheint falsch zu sein. 'hostname' fehlt. Sie versuchen, Json von einer falschen Domain zu bekommen. – Venky

+0

Alles andere als localhost, es zeigt einen Fehler im unteren Bereich an, was ein Schema-Validierungsfehler ist. – JAK

Antwort

5

Ich denke, es wird versucht, Zugriff auf json Daten von einem falschen Pfad. Stellen Sie sicher, dass der Pfad korrekt im testapiproject/swagger/ui/index.html" von swaggerui

$(function() { 
     var url = window.location.search.match(/url=([^&]+)/); 
     if (url && url.length > 1) { 
      url = decodeURIComponent(url[1]); 
     } else { 
      url = "/swagger/docs/v1";  // Make sure it's not hardcoded 
     } 
} 

AKTUALISIERT für .Net-Core

ich nur "Swashbuckle": "6.0.0-beta902" Paket installiert konfiguriert.

public void ConfigureServices(IServiceCollection services) 
{ 
      services.AddSwaggerGen(); 
      services.ConfigureSwaggerGen(options => 
      { 
       options.SingleApiVersion(new Info 
       { 
        Version = "v1", 
        Title = "test API", 
        Description = "test api for swagger", 
        TermsOfService = "None", 

       }); 
       options.IncludeXmlComments(/* whatever tha path */); 
       options.DescribeAllEnumsAsStrings(); 
      }); 

    } 

Im configurre mehod hat soeben

  app.UseSwagger(); 
      app.UseSwaggerUi(); // inside this method we can pass the root path of swagger 

Es wurde mit localhost arbeiten, aber nicht in vitural Verzeichnis. Also musste ich die folgende Konfiguration zu web.config hinzufügen, dann fing es an zu arbeiten.

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+1

Ich kann dies nicht tun, wie ich Swagger-Integration für ASP.NET Core RC1 Webapi-Projekt verwenden. In RC1 können Sie die index.html nicht finden. – JAK

+0

dasselbe Problem wie @JAK. Es ist virtuell –

1

Swager generiert API-Dokumente aus Code-Kommentaren, die in XML-Dateien gespeichert werden. Beispielsweise werden Kommentare für GatewayServer.dll in GatewayServer.xml gespeichert. Sie müssen es auf dem Deployment Server hochladen.