网络API路由 - 只有一个URI参数工作行动(Web API Routing - Only act

2019-10-20 10:14发布

我有工作正常的web API项目。 我与MVC项目合并了,现在只能用URI参数工作的行动。 所有其他操作结束了一个404未找到,甚至控制器找不到。

下面是我在WebApiConfig(标准的东西):

public static class WebApiConfig
{
    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 }
        );
    }        
}

下面是控制器类:

[Authorize]
[RoutePrefix("api/WikiPlan")]
public class WikiPlanController : ApiController

下面是工作的行动:

http://localhost:2000/api/WikiPlan/SearchWikiPlans/baby
[AllowAnonymous]
[HttpGet]
[Route("SearchWikiPlans/{keyword}")]
[ResponseType(typeof(List<WikiPlanSearchResultViewModel>))]
public IHttpActionResult SearchWikiPlans(string keyword)

这里有一个不工作(这曾经工作时,它在自己的项目):

http://localhost:2000/api/WikiPlan/TopWikiPlans
[AllowAnonymous]
[HttpGet]
[Route("TopWikiPlans")]
[ResponseType(typeof(List<TopWikiPlan>))]
public IHttpActionResult TopWikiPlans()

我不知道什么是错。 谢谢你的帮助!

Answer 1:

由于这条线路调试工具( http://blogs.msdn.com/b/webdev/archive/2013/04/04/debugging-asp-net-web-api-with-route-debugger.aspx ),我是能够追踪URL损坏想通了这个问题。

原来的框架是匹配对MVC的路线,而不是我的API路由URL损坏。 让我感动的呼叫登记在Global.asax中的MVC路线顶部的API的路线,现在是正确的匹配。



文章来源: Web API Routing - Only actions with a URI parameter work