gpt4 book ai didi

c# - 自托管 WebAPI 和多种 post 和 get 方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:16 25 4
gpt4 key购买 nike

我已经实现了控制台自托管 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

所以你也需要删除它。

关于c# - 自托管 WebAPI 和多种 post 和 get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45295798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com