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)
任何建议将非常感谢.非常感谢.
而不是写:
[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.