为什么我的 Web Api 2 Post 方法没有命中?
Why is my Web Api 2 Post method not hit?
在我的 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) 请求时,它会触发我的 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
没有命中吗?以及如何解决这个问题?
可能是您的路线需要一个 id 作为路线的一部分。
尝试将您的属性更改为:
[Route("MarkMovieAsWatched/{id?}")]
这样,如果您不将 id 作为路径的一部分传递,路由仍然是有效的匹配项。
在我的 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) 请求时,它会触发我的 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
没有命中吗?以及如何解决这个问题?
可能是您的路线需要一个 id 作为路线的一部分。
尝试将您的属性更改为:
[Route("MarkMovieAsWatched/{id?}")]
这样,如果您不将 id 作为路径的一部分传递,路由仍然是有效的匹配项。