【发布时间】:2017-11-29 05:28:18
【问题描述】:
我使用快速迁移工具将一个 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);
}
}
然后使用以下代码sn-p注册它
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":" 在 System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\r\n 在 System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage 请求) \r\n 在 System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)"}
非常感谢您为解决此问题提供的帮助
【问题讨论】:
-
我添加了 HttpConfiguration.EnsureInitialized();在 global.asax 但没有解决问题
-
您的 API 使用的是属性路由还是普通路由?
-
@Newbie Hi 你解决了这个问题吗?如果是这样,你能告诉我怎么做吗?因为我遇到了同样的问题
-
你最终会做什么来解决这个问题?
标签: asp.net-web-api sitecore sitecore-mvc sitecore8.2