我無法獲得基本路由以在我的asp.net web api項目中工作。我已經遵循asp.net(http://www.asp.net/web-api/overview/web-api-routing-and-actions)上的示例,並且我已經在整個stackoverflow中搜索,試圖找到解決方案。無論我嘗試過哪些示例,我都無法使屬性路由起作用。ASP.NET Web Api路由損壞
這是我的控制器:
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資源。
在控制器'Employee'上找不到與 請求匹配的操作。
帶或不帶整數參數。
感謝您對此進行清理。我覺得方法上的路由屬性優先於默認路由映射 – 2015-02-09 22:00:52
@ transporter_room_3我相信它優先的原因是因爲在映射其他路由之前有'config.MapHttpAttributeRoutes();'。然而,你得到錯誤的原因是沒有路由前綴,因此你需要請求的URL是'〜/ 1',因爲根據我的經驗,你不能混合和匹配屬性路由與正常路由同一個控制器。如果你沒有指定RoutePrefix,我不相信它會使用映射到後面路由的控制器,這就是爲什麼〜/ api/employee/1給你一個錯誤。 – mason 2015-02-09 22:13:50