Sitecore 8.2中的Web API路由

问题描述 投票:0回答:1

我使用快速迁移工具将sitecore 7.2应用程序迁移到sitecore 8.2。迁移后,Web API路由停止工作。我正在使用下面给出的方法来映射路由

 [UsedImplicitly]
        public class ConfigRegister
        {
            /// <summary>
            /// Startup method to bind all configurations for site core pipeline.
            /// </summary>
            /// <param name="args"></param>
            public virtual void Process(PipelineArgs args)
            { RouteConfig.RegisterRoutes(RouteTable.Routes);
     }
        }

然后使用以下代码段注册它

public static void Register(HttpConfiguration config)
        {
         config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "ControllersApi",
                routeTemplate: "WebApi/CustomerPortal/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

我收到错误名为“MS_attributerouteWebApi”的路径已经在路径集合中。路线名称必须是唯一的。参数名称:名称。

但是当我评论这条线时

config.MapHttpAttributeRoutes();

我收到错误{“Message”:“发生错误。”,“ExceptionMessage”:“该对象尚未初始化。确保在所有其他初始化代码之后在应用程序的启动代码中调用HttpConfiguration.EnsureInitialized() 。“,”ExceptionType“:”System.InvalidOperationException“,”StackTrace“:”at System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\ r \ n在System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot,HttpRequestMessage request)\ r \ n在System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)“}

我们非常感谢您帮助解决此问题

asp.net-web-api sitecore sitecore-mvc sitecore8.2
1个回答
0
投票

我假设你在初始化管道下有这个,对吗?

这是我们之前所做的并且在8.2上工作:

    public void Process(PipelineArgs args)
    {
        HttpConfiguration httpConfig = GlobalConfiguration.Configuration;
        httpConfig.Routes.MapHttpSessionRoute("WebApiRoute", "webapi/{controller}/{action}/{id}", true, new { id = RouteParameter.Optional });          
    }

如果上述方法不起作用,请尝试此操作(每个Habitat):

public void Process(PipelineArgs args)
{
     RouteTable.Routes.MapHttpRoute("Feature.Demo.Api", "api/demo/{action}", new
        {
           controller = "Demo"
        });
}
© www.soinside.com 2019 - 2024. All rights reserved.