Asp.net web api 翁布拉科海关路线

Asp.net web api 翁布拉科海关路线,asp.net-web-api,routing,umbraco,Asp.net Web Api,Routing,Umbraco,我刚刚开始在一个Umbraco(V7.3.4)项目中开发,似乎无法设置自定义路线。我已经阅读了很多文章和其他的答案,但我似乎在任何地方都找不到一个清晰完整的解决方案 我添加了一个名为ReportingApi的新控制器,它继承自UmbracoApiController。问题是它的路线是: http://myhostname.com/umbraco/api/reportingapi/{action}/{id} 不过,我想选择以下路线: http://myhostname.com/api/repor

我刚刚开始在一个Umbraco(V7.3.4)项目中开发,似乎无法设置自定义路线。我已经阅读了很多文章和其他的答案,但我似乎在任何地方都找不到一个清晰完整的解决方案

我添加了一个名为ReportingApi的新控制器,它继承自UmbracoApiController。问题是它的路线是:

http://myhostname.com/umbraco/api/reportingapi/{action}/{id}
不过,我想选择以下路线:

http://myhostname.com/api/reporting/{action}/{token}/{id}

如何实现这一点?

使用属性路由。用-

[Route("api/reporting/{action}/{token}/{id}")]
另外,检查
WebApiConfig
文件并确保

config.MapHttpAttributeRoutes(); 

代码已存在。

您可以通过扩展
ApplicationEventHandler
并在其中添加自定义路由来完成此操作:

public class MyApplicationEventHanlder : ApplicationEventHandler
{
    public MyApplicationEventHanlder()
    {
        //Create a custom route
        RouteTable.Routes.MapRoute(
            name: "api",
            url: "api/reporting/{action}/{token}/{id}",
            defaults: new 
            { 
                controller = "Reporting", 
                action = "Index", 
                id = UrlParameter.Optional 
            }
    );

    RegisterBundles(BundleTable.Bundles);
}

但是我的项目中没有WebApiConfig文件。。。我可以加一个吗?它不会与其他Umbraco设置冲突吗?在每个操作中添加[Route()]属性也会让人觉得乏味。我宁愿从一开始就声明一个路由配置(即在WebApiConfig中),并将其用于此控制器。我添加了WebApiConfig.cs文件并将其连接到Global.asax中,使用config.maphttpAttribute()指令,并将路由属性添加到我的操作中。它起作用了!我想知道是否有办法直接从WebApiConfig.cs(并与Umbraco合作)设置路由,我会接受你的答案,因为现在感觉这仍然是一个不完整的解决方案。