Asp.net web api2 带有Get请求的WebApi2路由无效
嗨,我正在做一个简单的程序,你可以搜索用户,注册用户,并获得所有注册的用户 我希望能够使用 /api/user/search?name=…&email=B 但这是行不通的。我得到一个错误是: { “消息”:“未找到与请求URI“”匹配的HTTP资源。”, “MessageDetail”:“在控制器‘用户’上未找到与请求匹配的操作。” } 我有这样的代码Asp.net web api2 带有Get请求的WebApi2路由无效,asp.net-web-api2,Asp.net Web Api2,嗨,我正在做一个简单的程序,你可以搜索用户,注册用户,并获得所有注册的用户 我希望能够使用 /api/user/search?name=…&email=B 但这是行不通的。我得到一个错误是: { “消息”:“未找到与请求URI“”匹配的HTTP资源。”, “MessageDetail”:“在控制器‘用户’上未找到与请求匹配的操作。” } 我有这样的代码 [RoutePrefix("api/user")] public class UserController : ApiController {
[RoutePrefix("api/user")]
public class UserController : ApiController
{
public HttpResponseMessage Get() {
// Check if the user is in the database
return Request.CreateResponse(HttpStatusCode.OK, "Return All");
}
public HttpResponseMessage Post(UserForm form) {
if (ModelState.IsValid == false) {
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
if (form == null) {
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Please enter data");
}
// Register the person
return Request.CreateResponse(HttpStatusCode.OK, "Register");
}
[Route("search/{name}/{email}")]
[HttpGet]
public HttpResponseMessage SearchGet(string name, string email) {
return Request.CreateResponse(HttpStatusCode.OK, "Found");
}
谢谢 将另一个路由属性添加到SearchGet方法应该可以工作:
[Route("search") ]
[Route("search/{name}/{email}")]
[HttpGet]
public HttpResponseMessage SearchGet(string name, string email) {
return Request.CreateResponse(HttpStatusCode.OK, "Found");
}
它将根据querystring参数计数和名称或每个querystring参数映射请求 如果你点击/api/user/search/bob/jimYes,它能工作吗?但我希望它也能与passing/api/user/search一起工作?name=…&email=BBizarre。这对我来说很好。在浏览器中,转到应用程序中的
/Help
。你看到API列表了吗?这里有你的吗?你能告诉我你要搜索的确切要求吗?我正在使用/api/user/search?name=Bob&email=b@b.com
并获得有效响应。另外值得一提的是,我传递了与您示例中相同的参数。名称为“..”,电子邮件为“B”。它仍然有效。