Swashbuckle/Swaggerエラーでスタックトレースまたは内部例外を取得する方法はありますか?ある時点で、機能しなくなりました。 .Net Core 2.0から2.1にアップグレードしたときだったのかどうかはわかりませんが、その後も引き続き機能していたと思います。 myapidomain/swagger/index.htmlに移動すると、次のエラーが発生します。
これはあまり役に立ちません。 2週間ほど前に動作していました... Swaggerの構成は変更しませんでした。これまでと同じです。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "My.API",
Description = "Test"
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseHsts();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "PropWorx API V1");
});
...
}
ASP.Net Core 2.1 Web APIでSwashbuckle.AspNetCore 3.0.0を使用しています。
UIデバッグは実際には役に立たないことに同意しますが、ブラウザーのデバッグツール(ChromeのF12など)を開き、/swagger
エンドポイントを更新して、swagger.json
ペイロードを調べることで、完全な例外トレースを取得できます。これは、XHRリクエストです。これは500
ステータスコードで失敗します。
(私は大きなプロジェクトでリンクをブックマークすることをお勧めします。そうすれば、将来、https://MyHost/swagger/v1/swagger.json
などのjsonファイルに直接進むことができます)
例えば以下の不自然なエラーで、2つのメソッド間で同じルートを複製しました。
[HttpGet]
[Route("parseenum")]
public ActionResult CheckEnum([FromQuery] MyEnum someEnum)
...
[HttpGet]
[Route("parseenum")]
public ActionResult CheckEnum2([FromQuery] MyEnum someEnum)
...
エラーが発生します:
これを追跡して修正できるはずです。
私は今日この問題を抱えており、それを解決するために多くのことを試みます。たとえば、次のコードのようなC#コントローラーコードの[http]タグの前にすべての[ルート]を削除する必要があります。
[Route("~/api/getAll")]
[HttpGet]
public ActionResult<List<asteriksModel>>GetAll()
{
return _context.asterList.ToList();
}
そしてあなたのルートコードはこのようなものでなければなりません
[HttpGet]
public ActionResult<List<asteriksModel>>GetAll()
{
return _context.asterList.ToList();
}
私のプロジェクトではそれはうまくいきます、
APIに同じ2つ以上の_[HttpGet]
_がある場合、動作しません。 [HttpGet]、[HttpGet ("{id}")]
を指定する必要があります
_ [HttpGet]
`[HttpGet ("{id}")]`
_