2016-06-28 8 views
7

ASP.NET Core RC1アプリケーションで次のNuGetパッケージを使用してスガッガーを統合しました。ASP.NET Core RC1 - WebAPI Swaggerインテグレーション - "Error" SchemaValidationMessages

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

ここでは、ぼかし積分のコードを示します。

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(); 
    } 

ローカルホストを使用してローカルにアクセス中にコードが闊歩ドキュメントを生成 - >「http://localhost:8080/testapiproject/swagger/ui/index.html」。私はまだ闊歩ドキュメントを取得していますが、私はそれが言うクリックすると、下に「エラー」を取得しています、

{"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'このパスは間違っているようです。 'hostname'がありません。間違ったドメインからjsonを取得しようとしています。 – Venky

+0

localhost以外のもので、スキーマの検証エラーである下部にエラーが表示されます。 – JAK

答えて

5

展開サーバーでコードを展開した後、私はそれをしようとしていると思いますが

、間違ったパスからjsonデータにアクセスしてください。パスは私だけ"Swashbuckle": "6.0.0-beta902"パッケージをインストールされている.NETのコア

のために更新testapiproject/swagger/ui/index.html"

$(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 
     } 
} 

swaggerui

で正しく設定されていることを確認します。 configurreのmehodで

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(); }); } 

はちょうど

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

それはローカルホストでの作業ではなく、vituralディレクトリに加えました。だから私はweb.configに以下の設定を追加しなければなりませんでした。

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

私はASP.NET Core RC1 webapiプロジェクトのための鋭い統合を使用しているので、私はこれを行うことはできません。 RC1では、index.htmlを見つけることができません。 – JAK

+0

@ JAKと同じ問題です。それは仮想です –

1

Swagerは、xmlファイルに格納されたコードコメントからAPIドキュメントを生成します。たとえば、GatewayServer.dllのコメントはGatewayServer.xmlに格納されます。オンデプロイメントサーバーをアップロードする必要があります。

関連する問題