Web Api 具有 404 响应 IHttpActionResult 的路由

Web Api Routing with 404 response IHttpActionResult

我正在尝试使以下路线正常工作,但遇到了问题。路线 api/user/name 工作正常;我得到结果 "Whats up".

但是,路由 api/user/Register 导致 404。

private void ConfigureWebApi(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
} 

控制器:

using System.Web.Http;
using Angular.Data.IServices;
using Angular.Data.Modals;

namespace Angular.Api.Controllers
{
    [RoutePrefix("api/user")]
    public class UserController : ApiController
    {
        private IUserService _userService;

        [Route("Name")]
        [HttpGet]
        public string Name()
        {
            return "Whats up";
        }


        [Route("Register")]
        public IHttpActionResult Register(User usr, string password)
        {
            _userService.RegisterUser(usr, password);

            //var response = Request.CreateResponse<User>(HttpStatusCode.Created, usr);

            //string uri = Url.Link("Register", new { id = usr.Id });
            //response.Headers.Location = new Uri(uri);
            return Ok("response");
        }
    }
}

您是否在请求中传递 usr 和密码的值?如果没有,那可能就是问题所在。您可能还希望制作一个包含注册所需的所有数据的单一模型,而不是将 usr 和密码拆分为两个参数。

例如,尝试将您的方法签名更改为:

[Route("Register")]
[HttpGet]
public IHttpActionResult Register(string username, string password)

然后在您的浏览器中访问 api/user/Register/?username=test&password=pwd,看看它是否有效。