Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api2 带有Get请求的WebApi2路由无效_Asp.net Web Api2 - Fatal编程技术网

Asp.net web api2 带有Get请求的WebApi2路由无效

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 {

嗨,我正在做一个简单的程序,你可以搜索用户,注册用户,并获得所有注册的用户

我希望能够使用

/api/user/search?name=…&email=B

但这是行不通的。我得到一个错误是:

{ “消息”:“未找到与请求URI“”匹配的HTTP资源。”, “MessageDetail”:“在控制器‘用户’上未找到与请求匹配的操作。” }

我有这样的代码

[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”。它仍然有效。