【问题标题】:Self-hosted WebAPI and multiple post and get methods自托管 WebAPI 和多个 post 和 get 方法
【发布时间】: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


【解决方案1】:

您的问题在于您的路由。 这里

routeTemplate: "api/{controller}/{id}",

您尚未添加“{action}”,因此在将其更改为此之前您无法获取操作:

routeTemplate: "api/{controller}/{action}/{id}",

您还在控制器中将“api/Message”添加到 Action 的路由中,这将使您的路由类似于:

api/{controller}/{action}/api/Message/NewMessage

所以你也需要删除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2013-08-05
    • 2012-12-08
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多