[英]ASP.NET Web Api Routing Broken
我無法在asp.net Web API項目中使用基本路由。 我在asp.net( http://www.asp.net/web-api/overview/web-api-routing-and-actions )上關注了一些示例,並在整個stackoverflow中進行了搜索,以尋求解決方案。 無論我嘗試過什么示例,都無法使屬性路由正常工作。
這是我的控制器:
public class EmployeeController : ApiController
{
private readonly IRepository<Employee> _employees;
public EmployeeController(IRepository<Employee> repo)
{
_employees = repo;
}
[Route("")]
public IEnumerable<Employee> GetEmployees()
{
return _employees.Queryable();
}
[Route("{id:int}")]
public Employee GetEmployee(int id)
{
return _employees.Queryable().FirstOrDefault();
}
}
這是我的Global.asax.cs:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
這是我的WebApiConfig.cs:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
無論我嘗試什么,最終都會得到404或上面的代碼,我得到消息
找不到與請求URI'http :// localhost:2442 / api / employee / 1 '匹配的HTTP資源。
在與請求匹配的控制器“雇員”上未找到任何操作。
帶有或不帶有整數參數。
您是否嘗試過將RoutePrefix屬性放在您的類上,如下所示:
[RoutePrefix("api/employee")]
public class EmployeeController : ApiController
為您的控制器使用屬性路由,或者不全部使用它。 這意味着您需要用RoutePrefix裝飾控制器,而不是依靠配置的路由。
[RoutePrefix("api/employee")
public class EmployeeController : ApiController
{
private readonly IRepository<Employee> _employees;
public EmployeeController(IRepository<Employee> repo)
{
_employees = repo;
}
[Route("")]
public IEnumerable<Employee> GetEmployees()
{
return _employees.Queryable();
}
[Route("{id}")]
public Employee GetEmployee(int id)
{
return _employees.Queryable().FirstOrDefault();
}
}
或在以下示例中,我們依賴於已定義的路由而不是使用屬性路由。
public class EmployeeController : ApiController
{
private readonly IRepository<Employee> _employees;
public EmployeeController(IRepository<Employee> repo)
{
_employees = repo;
}
public IEnumerable<Employee> GetEmployees()
{
return _employees.Queryable();
}
public Employee GetEmployee(int id)
{
return _employees.Queryable().FirstOrDefault();
}
}
如果混搭,就會使事情變得混亂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.