【发布时间】:2017-07-25 06:46:04
【问题描述】:
我已经实现了控制台自托管 WebAPI 应用程序。
我的控制器适用于单个 get 和 post 方法。
我不知道如何在 ApiController 中实现多个 get 和 posts 方法
Startup.cs
class Startup
{
public void Configuration(IAppBuilder app)
{
// Initialize WebAPI
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "apiRoute",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
// Initialize SignalR
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
ApiController 工作正常
public class MessageController : ApiControllerWithHub<SignalMessageHub>
{
public IEnumerable<MyItem> GetMessages()
{
//Code
}
public HttpResponseMessage PostNewMessage(User user)
{
// code
}
}
ApiController 不起作用
public class MessageController : ApiControllerWithHub<SignalMessageHub>
{
public IEnumerable<MyItem> GetMessages()
{
//Code
}
// Cannot route to those methods
[HttpPost()]
[Route("api/Message/NewMessage")]
public HttpResponseMessage PostNewMessage(User user)
{
// code
}
[HttpPost()]
[Route("api/Message/NewMessage2")]
public HttpResponseMessage PostNewMessage2(User user)
{
// code
}
}
【问题讨论】:
-
尝试将您的路由从
routeTemplate: "api/{controller}/{id}",更改为routeTemplate: "api/{controller}/{action}/{id}",并从操作Route中删除api/Message,然后您应该能够在"api/Message/NewMessage"上获得它们 -
@Dimi 抱歉,在编辑之前发布! Samvel 的回答看起来不错。
标签: c# asp.net-web-api http-post