我希望能够从同一个 url (api/test...) 调用 GET 和 POST 请求,但我目前在以下代码行中收到当前上下文错误:
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
//The name 'HttpVerbs' does not exist in the current context -- error.
我已经在 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.");
}
}
如有任何建议,我们将不胜感激。非常感谢。
最佳答案
而不是写:
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
你试过吗:
[AcceptVerbs("GET","POST")]
或者,甚至更好:
[HttpGet]
[HttpPost]
?
HttpVerbs
类(在命名空间 System.Web.Mvc
中)特定于 MVC 项目,而不是 Web API。
关于c# - 你能从 web api Controller 同时调用 GET 和 POST 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258897/