具有404响应的Web Api路由IHttpActionResult

时间:2015-03-20 19:22:13

标签: routing asp.net-web-api2 asp.net-web-api-routing

我正试图让以下路线起作用但有问题。路线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");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您是否在请求中传递了usr和密码的值?如果没有,那可能就是问题所在。您也可能想要创建一个包含注册所需的所有数据的模型,而不是将usr和密码分成两个参数。

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

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

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

相关问题