C# Web api路由-无法访问默认路由?
我希望在我的web api中使用以下路由:C# Web api路由-无法访问默认路由?,c#,asp.net-web-api,C#,Asp.net Web Api,我希望在我的web api中使用以下路由: /api/week/2013/08/29通过更改您的日期时间?week参数的默认值为空。您的两条路线都在运行: [WeekFilter] public IEnumerable<Week> Get(DateTime? week = null) { return null; } [WeekFilter] public IEnumerable Get(DateTime?week=null) { 返回null; } 使用api/wee
/api/week/2013/08/29通过更改您的
日期时间?week
参数的默认值为空。您的两条路线都在运行:
[WeekFilter]
public IEnumerable<Week> Get(DateTime? week = null)
{
return null;
}
[WeekFilter]
public IEnumerable Get(DateTime?week=null)
{
返回null;
}
使用api/week
调用控制器时,操作方法上的week参数为null
。如果年和月为空,您可以通过修改周过滤器
以初始化周来更改此设置
如果你用/api/week/2013/8/13
调用它,一切都按预期进行。我发现了我的错误
在我的全球asax中,我有:
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
WebApiConfig.RegisterRoutes(GlobalConfiguration.Configuration);
BundleConfig.RegisterBundles(BundleTable.Bundles);
但显然,web Api路由的位置很重要,我将其更改为
WebApiConfig.RegisterRoutes(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
现在它工作了 你犯了什么样的错误?模棱两可的匹配?404当我尝试/api/或/api/week/,/api/week/2013/08/29时,会给我正确的结果,你的/api/week/2013/08/29是否有效?是的,它会给我正确的结果,包括属性和操作(尽管这只是调用我的querycommand)
[WeekFilter]
public IEnumerable<Week> Get(DateTime? week = null)
{
return HandlerLocator.GetQueryHandler<IGetWeeksDataHandler>().Execute(week);
}
[WeekFilter]
public IEnumerable<Week> Get(DateTime? week = null)
{
return null;
}
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
WebApiConfig.RegisterRoutes(GlobalConfiguration.Configuration);
BundleConfig.RegisterBundles(BundleTable.Bundles);
WebApiConfig.RegisterRoutes(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);