asp.net - 具有多个 HttpPosts 方法的 ASP.NET MVC Web api 不起作用
问题描述
我的 ASP.NET API 控制器中有这两个 post 方法:
[HttpPost]
[ActionName("post1")]
public bool PostGradingTasks(List<Reports> landingCells)
{
}
[HttpPost]
[ActionName("post2")]
public String UploadImages(HttpPostedFileBase file)
{
}
但是当我从我正在构建的这个应用程序中调用 PostGradingTasks 时,它不会被调用,只有当我完全删除 UploadImages 它才有效:这是我的路线
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{id}/{bool}",
defaults: new { communityRedBlue = RouteParameter.Optional, isAlphabeticalSort = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ControllerAndAction",
routeTemplate: "api/{controller}/{action}"
);
}
}
我刚刚添加了这条路线:
config.Routes.MapHttpRoute(
name: "ControllerAndAction",
routeTemplate: "api/{controller}/{action}"
);
但它仍然无法正常工作,我做错了什么?
解决方案
您应该使用 IMO 比约定路由更好的设计的属性路由。使用控制器和方法上的 Route/RoutePrefix 属性进行设置。
这是您的发布方法的示例
[RoutePrefix("api/test")]
public class TestController: ApiController
{
[HttpPost]
[Route("post1")] //api/test/post1
public bool PostGradingTasks(List<Reports> landingCells)
{
}
[HttpPost]
[Route("post2")] //api/test/post2
public String UploadImages(HttpPostedFileBase file)
{
}
}
推荐阅读
- git - 稀疏结帐工作区上的 Git 合并也会拉出所有其他文件夹
- flutter - 此 AdWidget 已在 Widget 树中。如何禁用此异常。这是什么意思?扑
- windows - 如何阻止用户在 windows 2012 R2 中删除文件?
- makefile - 如何欺骗 Make 在子文件夹中动态运行命令
- azure-devops - 从 repo 构建特定的解决方案文件
- swift - 如何修复显示屏上的按钮
- python - Google OR-TOOLS VRP 以前的 OR-TOOLS 分配问题的问题
- postman - 如何在 Postman 中使用 pm.expect 断言来显示差异
- c++ - 使用 VSCode MACOS 构建时 GLFW 链接器命令失败(退出代码 1)
- reactjs - 如何记忆自定义钩子以提高性能