你可以从web api控制器同时调用GET和POST吗?

use*_*072 2 c# post get asp.net-web-api

我希望能够从相同的URL(api/test ...)调用GET和POST请求,但我目前在以下代码行中获得当前上下文错误:

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
//The name 'HttpVerbs' does not exist in the current context -- error. 
Run Code Online (Sandbox Code Playgroud)

我在MVC添加了命名空间,但因为我的应用程序的Web API,它使授权属性声明MVC命名空间时告吹.

    [Authorize]
    [AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)] // error
    public HttpResponseMessage post([FromUri] Query query)
    {
        if (User.IsInRole("admin"))
        {

            IQueryable<data_qy> Data = null;

            if (!string.IsNullOrEmpty(query.name))
            {
                var ids = query.name.Split(',');

                var dataMatchingTags = db.data_qy.Where(c => ids.Any(id => c.Name.Contains(id)));

                if (Data == null)
                    Data = dataMatchingTags;
                else
                    Data = Data.Union(dataMatchingTags);
            }

            if (Data == null) 
                Data = db.data_qy;

            if (query.endDate != null)
            {
                Data = Data.Where(c => c.UploadDate <= query.endDate);
            }

            if (query.data_qy != null)
            {
                Data = Data.Where(c => c.UploadDate >= query.data_qy);
            }

            Data = Data.OrderByDescending(c => c.UploadDate);

            var data = Data.ToList();

            if (!data.Any())
            {
                var message = string.Format("No data found");
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
            }

            return Request.CreateResponse(HttpStatusCode.OK, data);
        }

        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Access Denied, Please try again.");
    }

}
Run Code Online (Sandbox Code Playgroud)

任何建议将非常感谢.非常感谢.

dji*_*kay 7

而不是写:

    [AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
Run Code Online (Sandbox Code Playgroud)

你有没有尝试过:

    [AcceptVerbs("GET","POST")]
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好:

    [HttpGet]
    [HttpPost]
Run Code Online (Sandbox Code Playgroud)

HttpVerbs类(在命名空间System.Web.Mvc)是特定于MVC的项目,而不是web API.