【问题标题】:Why is my Web Api 2 Post method not hit?为什么我的 Web Api 2 Post 方法没有命中?
【发布时间】:2015-09-06 11:20:22
【问题描述】:

在我的 apicontroller 中,我有 2 种方法可以处理 Post 请求:

public WatchListItemDTO Post(MovieDto movie)
{
    //do smt..
}

[HttpPost]
[Route("MarkMovieAsWatched/{id}")]
public void MarkMovieAsWatched(int id)
{
    // do smt..
}

控制器具有前缀属性:[RoutePrefix("api/DownloadList")]。当我向http://localhost:4229/api/DownloadList/MarkMovieAsWatched/发出(发布)请求时,它会触发我的Post 方法。该请求还包含一个对象:{id: 12}

我的WebApiConfig

public static void Register(HttpConfiguration config)
{
    config.EnableCors();

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

    // To disable tracing in your application, please comment out or remove the following line of code
    // For more information, refer to: http://www.asp.net/web-api
    config.EnableSystemDiagnosticsTracing();
}

有人可以向我解释为什么方法MarkMovieAsWatched 没有被命中吗?以及如何解决这个问题?

【问题讨论】:

标签: c# asp.net-web-api asp.net-web-api2


【解决方案1】:

您的路线可能需要一个 id 作为路线的一部分。

尝试将您的属性更改为:

[Route("MarkMovieAsWatched/{id?}")]

这样,如果您不将 id 作为路径的一部分传递,该路由仍然是有效的匹配项。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2013-12-07
    • 2022-01-11
    相关资源
    最近更新 更多