0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】ASP.NET CoreアプリでSwaggerがつながらなくなる

Posted at

はじめに

image.png

Asp.net CoreのWebAPIに対して単体テストプロジェクトとテストコードを追加したところ、デバッグ実行で上記が表示されるように。。。

原因

挙動確認用にControllerクラスにHTTPコマンドに対応していないpublicメソッドを追加したことが原因。

[ApiController]
[Route("api/[controller]")]
public class TodoListController : ControllerBase
{
    private readonly ILogger<TodoListController> _logger;
    private readonly TempDbContext _context;

    public TodoListController(ILogger<TodoListController> logger, TempDbContext context)
    {
        _logger = logger;
        _context = context;
    }

    [HttpGet(Name = "GetRecords")]
    public async Task<ActionResult<IEnumerable<StudyRecord>>> GetAllStudyRecords()
    {
        return await _context.Records.ToListAsync();
    }

+    public int TestMethod(int id)// <-このメソッドが追加されていることが原因
+   {
+        return id;
+    }
}

継承元のControllerBaseクラスの公式リファレンスやMVCの説明を見てみたのですがどうしてこのような挙動になっているかはわからなかったです。そのためさらに深い位置に原因がある可能性はあります。

WebAPIとしてのコントローラーにAPI以外のパブリックメソッドはいらないということでしょうか?

おわりに

単体テストプロジェクトとGithub actionsのCI/CD追加作業をしていたため、デバッグ実行する機会がなく問題のメソッド追加から発覚まで少々ラグがありました。

結果何が原因か全くわからずかなり焦りました。。。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?