【发布时间】:2016-11-16 06:23:37
【问题描述】:
我遵循了一些答案,但在邮递员上收到以下错误
{
"Message": "The requested resource does not support http method 'GET'."
}
这些是我关注的链接
How to add custom methods to ASP.NET WebAPI controller?
目前的设置就像 sky-dev 描述的那样
Custom method names in ASP.NET Web API
已更新代码
webapiconfig.cs
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
//config.SuppressDefaultHostAuthentication();
//config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
//// Web API routes
//config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
config.Routes.MapHttpRoute("DefaultApiWithId", "api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiWithAction", "api/{controller}/{action}");
config.Routes.MapHttpRoute(name: "ApiWithActionName",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute("DefaultApiGet", "api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
config.Routes.MapHttpRoute("DefaultApiPost", "api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
}
defaultcontroller.cs
public class DefaultController : ApiController
{
DBEntities db = new DBEntities();
public IEnumerable<CategoryDTO> Category()
{
IEnumerable<CategoryDTO> List = from tr in db.Categories
where tr.IsActive == "Y"
orderby tr.DisplayOrder ascending
select new CategoryDTO()
{
Id = tr.Id,
Name = tr.Name
};
return List;
}
// GET: api/Default
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/Default/5
public string Get(int id)
{
return "value";
}
// POST: api/Default
public void Post([FromBody]string value)
{
}
// PUT: api/Default/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE: api/Default/5
public void Delete(int id)
{
}
}
【问题讨论】:
-
你用[HttpGet]装饰了吗?
-
是的,我做到了,它正在使用它,但我在其中一个项目中看到它没有用 [HttpGet] 装饰,但它正在工作..
-
需要查看您的代码以进行调试。
-
我推荐这篇文章exceptionnotfound.net/…在它的中间,作者解释了ASP.NET如何找到一个动作的默认方法
-
能否发布您输入的 URL 以访问您的 API?
标签: c# asp.net asp.net-web-api