【问题标题】:Web Api Routing with 404 response IHttpActionResult带有 404 响应 IHttpActionResult 的 Web Api 路由
【发布时间】:2015-03-20 19:22:13
【问题描述】:

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

但是,Route 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");
        }
    }
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢它的工作 - 我为参数创建了 DTO 并且它现在可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多