亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我需要添加什么路由來映射到 API 控制器?

我需要添加什么路由來映射到 API 控制器?

PHP
SMILET 2024-01-20 16:06:48
我已將 ApiController 添加到我的 asp.net core 2.2 應用程序中,并且來自 UI 的異步調用不匹配。這是我在 Startup.cs 中的路線。app.UseMvc(config =>{    config.MapRoute(        "Api",        "api/{controller}/{action}/{id?}"    );    config.MapRoute(        "Default",         "{controller=App}/{action=Index}/{id?}"    );});下面是向 API 控制器發出各種 GET 請求的 JavaScript 函數之一。function clearAllFilters() {  $.get({    url: "/api/GridFilter/ClearAllFilters",    contentType: "application/json; charset=utf-8",    dataType: "json",    success: function () {        console.log('filters cleared');    }  });}這是 API 控制器:[Route("api/[controller]")][ApiController]public class GridFilterController : ControllerBase{    private static readonly string[] FilterFields = {        // Bunch of strings, omitted for brevity    };    [HttpGet]    public IActionResult ClearAllFilters()    {        foreach (string column in FilterFields)        {            if (HttpContext.Session.TryGetValue(column, out byte[] savedJson))            {                HttpContext.Session.Remove(column);            }        }        return Ok(true);    }為什么asp.net不匹配這個?我的網址是 /api/controller/action ,它似乎與啟動時映射的第一個路由匹配。
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

您正在混合傳統路由和屬性路由:

操作要么是傳統路由,要么是屬性路由。將路由放置在控制器或操作上使其具有路由屬性。定義屬性路由的操作無法通過常規路由到達,反之亦然??刂破魃系?strong>任何路由屬性都會使控制器屬性中的所有操作都路由。

示例中的以下調用配置傳統路由模板:

config.MapRoute("Api","api/{controller}/{action}/{id?}");

但是,您已GridFilterController通過使用路由屬性 (?[Route(...)]) 配置為使用屬性路由:

[Route("api/[controller]")]
[ApiController]
public?class?GridFilterController?:?ControllerBase

要從訪問ClearAllFilters操作/api/GridFilter/ClearAllFilters,您有兩個常規選項:

  1. 將屬性路由模板更改為:

    [Route("api/[controller]/[action]")]

    這意味著操作的名稱將作為路由的一部分包含在內,這與您設置的傳統路由模板類似。

  2. 完全刪除該[Route(...)]屬性。但是,這并不理想,因為您還必須刪除該[ApiController]屬性,因為這需要屬性路由。


查看完整回答
反對 回復 2024-01-20
  • 1 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號