Asp.net web api Web API 2属性路由返回404
我很难让WebAPI2属性路由正常工作。 整个晚上我都在想尽一切办法,但我找不到问题所在 我希望实现以下目标: 向Asp.net web api Web API 2属性路由返回404,asp.net-web-api,attributerouting,Asp.net Web Api,Attributerouting,我很难让WebAPI2属性路由正常工作。 整个晚上我都在想尽一切办法,但我找不到问题所在 我希望实现以下目标: 向http://localhost:xxxx/api/chat/joingroup/1234获取以下API调用: [Route("joingroup/{id}")] [HttpPost] public async Task<IHttpActionResult> JoinGroup(string id, string connectionID) { await hub
http://localhost:xxxx/api/chat/joingroup/1234
获取以下API调用:
[Route("joingroup/{id}")]
[HttpPost]
public async Task<IHttpActionResult> JoinGroup(string id, string connectionID)
{
await hubContext.Groups.Add(connectionID, id);
return Ok(hubContext.Groups.ToString());
}
但将帖子发送到:http://localhost:41021/api/chat/sendmessage/pm/123123
和http://localhost:41021/api/chat/joingroup
给了我一个200
聊天室管理员:
[RoutePrefix("api/chat")]
public class ChatController : ApiController
{
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
[...]
[Route("joingroup/{id}")]
[HttpPost]
public async Task<IHttpActionResult> JoinGroup(string id, string connectionID)
{
await hubContext.Groups.Add(connectionID, id);
return Ok(hubContext.Groups.ToString());
}
[RoutePrefix(“api/chat”)]
公共类聊天控制器:ApiController
{
IHubContext hubContext=GlobalHost.ConnectionManager.GetHubContext();
[...]
[路由(“joingroup/{id}”)]
[HttpPost]
公共异步任务JoinGroup(字符串id、字符串连接id)
{
wait hubContext.Groups.Add(connectionID,id);
返回Ok(hubContext.Groups.ToString());
}
HTTP发布到http://localhost:xxxx/api/chat/sendmessage
工作正常。
当我在http://localhost:xxxx/api/chat/joingroup/1234
解决方案:解决方案是引用JoinGroup方法中需要的两个值id和connectionID。现在请求将命中此方法。 使用:
http://localhost:xxxx/api/chat/joingroup/john?connectionid=123
会起作用。我注意到您发送的代码中有两件事:
public string JoinGroup(string id, string connectionID = "")
请让我知道这是否有帮助。
谢谢
Ashraf我假设
connectionID
参数引用发布的数据。最简单的方法是使用[FromBody]
属性对其进行修饰,并在发送的值前面放置一个=
,如下所示:=MyConnection1
Web API需要具有属性或数组的对象。或者,您可以使用自定义类包装连接ID,并将其序列化为JSON/XML。谢谢!这很有效。我正在考虑只向方法发送JSON,让它与模型一起工作。
public string JoinGroup(string id, string connectionID = "")