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

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

Web API 方法永遠不會被路由到

Web API 方法永遠不會被路由到

C#
呼喚遠方 2021-06-18 21:16:29
我以前玩過 web api,我似乎總是遇到同樣的問題,我的方法沒有被路由到。我的應用程序具有該應用程序洞察包,因此我可以看到它捕獲了我發出的請求 - 通過查看我的方法簽名上方的請求行,但它們從未真正執行并且 App Insights 報告失敗的請求。這是我的 WebApiConfigconfig.Routes.MapHttpRoute(    name: "DefaultApi",    routeTemplate: "api/{controller}/{id}",    defaults: new { id = RouteParameter.Optional };這是我的簡單控制器和方法public class ExampleController : ApiController{    [HttpGet]    [ActionName("Test")]    public IHttpActionResult Test()    {        return Ok();    }}這是 MVC 應用程序的一部分,所以當我啟動項目時,主頁/索引視圖會顯示在我的瀏覽器中。然后我去郵遞員并創建一個新的 Get 請求指向http://localhost:port/api/Example/Test但這會導致 404。我一定是做錯了什么,因為我總是遇到這個
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

WebAPI 的默認映射不包括作為路由一部分的操作,因為默認情況下,它希望控制器是資源的主要標識符,并且 GET/POST/PUT/DELETE 動詞來定義運行哪個操作。


因此,即使您手動指定“Test”的 ActionName,默認處理程序中也沒有任何內容可以與其進行模式匹配。


您可以調整默認映射以包含操作,如下所示:


config.Routes.MapHttpRoute(

    name: "DefaultApi",

    routeTemplate: "api/{controller}/{action}/{id}",

    defaults: new { id = RouteParameter.Optional }

;

但是,您可能會發現您更喜歡屬性路由(我知道我喜歡),您可以像這樣將其應用于您的控制器:


[RoutePrefix("api/Example")]

public class ExampleController : ApiController

{

    [HttpGet]

    [Route("Test")]

    public IHttpActionResult Test()

    {

        return Ok();

    }

}

要啟用屬性路由,您需要將以下內容添加到您的啟動配置中:


config.MapHttpAttributeRoutes();


查看完整回答
反對 回復 2021-06-20
  • 1 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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