0

私は.NetCore Web APIプロジェクトを持っています。そして私はそれにスガッガーを使用しようとしています。 すべての設定はうまく見えますが、プロジェクトを実行すると404エラーが発生します。ページが見つかりません。ここでSwagger UIを実行できません

は私のコードです:

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddSingleton(_config); 
     services.AddTransient<IRestHelper, RestHelper>(); 
     // Add framework services. 
     services.AddApplicationInsightsTelemetry(_config); 

     services.AddMvc(); 
     services.AddSwaggerGen(config => 
     { 
      config.SwaggerDoc("v1", new Info { Title = "Slack Relay API", Version = "v1" }); 
     }); 
    } 


    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(_config.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     app.UseApplicationInsightsRequestTelemetry(); 

     app.UseApplicationInsightsExceptionTelemetry(); 
     app.UseMvc(); 
     app.UseSwagger(c => 
     { 
      c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value); 
     }); 

     app.UseSwaggerUI(c => 
     { 
      c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); 
     }); 
    } 

マイウェブAPIベースURLは次のとおりです。http://localhost:88/ 私はこのURLを開こうとするので、私は404を得る:http://localhost:88/swagger/ui

私はNetCore 1.0.1を使用していますそしてproject.jsonで私はSwaggerをインポートするこの行を持っています: "Swashbuckle.AspNetCore": "1.0.0"

助けてください。 ありがとう

答えて

1

ミドルウェアの順序が重要であることを覚えておく必要があります。すべての要求を処理しようとするので、MVCミドルウェアが最後になる必要があります。コントローラのアクションが/swagger/uiにマップされていないため、404エラーが表示されます。 Configure方法を変更します。

app.UseSwagger(c => 
    { 
     c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value); 
    }); 

    app.UseSwaggerUI(c => 
    { 
     c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); 
    }); 

    app.UseMvc(); 

また、それはMVCのミドルウェアが闊歩に関連するすべての要求を処理しようとはしませんので、次のようなものでapp.UseMvc()を交換する方がよい(URLへのリクエストが/swaggerで開始):

app.MapWhen(x => !x.Request.Path.Value.StartsWith("/swagger"), builder => 
{ 
    builder.UseMvc(); 
}); 
+0

に変更されました。それは奇妙なことですが、あなたが言った変更を正確に行いましたが、それはまだ動作しません。このURLには、Swagger http:// localhost:88/swagger/v1/swagger.jsonのjsonが表示されます。だから、JSONを手に入れたことは構成がうまくいったことを意味しますか?しかし、私はまだこのURL http:// localhost:88/swagger/uiの404を持っています。 – MarcosF8

+0

私はあなたと他の応答のおかげで働いて私のものを手に入れました。 2つの適切な回答をしたいと思いますが、不可能なようです。本当にありがとう ! – MarcosF8

関連する問題