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
,看看它是否有效。
我正在尝试使以下路线正常工作,但遇到了问题。路线 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
,看看它是否有效。