我已经实现了控制台自托管 WebAPI 应用程序。
我的 Controller 适用于单个 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}",
您尚未添加“{action}”,因此在将其更改为此之前您无法获取操作:
routeTemplate: "api/{controller}/{action}/{id}",
您还向 Controller 中的 Action 路由添加了“api/Message”,这将使您的路由类似于:
api/{controller}/{action}/api/Message/NewMessage
所以你也需要删除它。
