ASP.NET Core 2.2 新的 Endpoint Routing

Posted on 2018-12-27

在 ASP.NET Core 2.2 的版本,Endpoint Routing 的行為和之前的版本不太一樣,來看一下差異的部份

設定

  • 在 2.2 的版本,預設 Endpoint Routing 是啟用的,可以修改 MVC 的設定把它關掉
services.AddMvc(options => options.EnableEndpointRouting = false)
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

測試的連結

  • 下面會產生這個 About 的連結來當測試

產生沒有參數的連結

  • 有 Enpoint Routing
    • Action nmae 產生連結

  • 沒有 Enpoint Routing
    • 保留傳入參數的大小寫

產生不存在的連結

  • 有 Enpoint Routing
    • 無法產生連結

  • 沒有 Enpoint Routing
    • 一樣產生連結

產生非空參數的連結

  • 有 Endpoint Routing
    • 無法產生連結

  • 沒有 Endpoint Routing
    • 一樣產生連結

產生可為空參數的連結

  • 不管有跟沒有 Endpoint Routing 的結果一樣
    • Action name 產生連結

後記

  • 感覺上這個改變是為了不要產生錯誤的連結,不過如果不清楚的人可能會覺得為什麼行為和之前不一樣
  • 有關於相關的改動可以參考官方文件 Differences from earlier versions of routing