Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Tim 1193 posts 2675 karma points MVP 3x c-trib
    Oct 06, 2015 @ 15:54
    Tim
    0

    Error Loading Back Office Content

    So. I've upgraded a site from 4.7.1 to 7.3. For the most part, the process has worked. However, I have a bunch of nodes that will not load in the back office.

    I get the little red error popup stating:

    Server error: Contact administrator, see log for full details. Failed to retrieve data for content id XXXX

    Nothing is in the UmbracoTraceLog, and there's nothing logged in ELMAH either. If I debug using Chrome tools and inspect the request, the call to:

    http://localhost:2205/umbraco/backoffice/UmbracoApi/Content/GetById?id=XXXX

    Results in a 500 error, and the JSON response contains the following:

    )]}', {"Message":"An error has occurred.","ExceptionMessage":"\r\n\r\nMapping types:\r\nContent -> String[]\r\nUmbraco.Core.Models.Content -> System.String[]\r\n\r\nDestination path:\r\nContentItemDisplay.Urls.Urls\r\n\r\nSource value:\r\nUmbraco.Core.Models.Content","ExceptionType":"AutoMapper.AutoMapperMappingException","StackTrace":" at Umbraco.Web.Editors.ContentController.GetById(Int32 id)\r\n at lambdamethod(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>cDisplayClass10.9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()","InnerException":{"Message":"An error has occurred.","ExceptionMessage":"ContentTypeService failed to find a content type with alias \"Section-CWINews\".","ExceptionType":"System.Exception","StackTrace":" at Umbraco.Core.Models.PublishedContent.PublishedContentType.CreatePublishedContentType(PublishedItemType itemType, String alias)\r\n at Umbraco.Core.Models.PublishedContent.PublishedContentType.<>c__DisplayClassc.<Get>b__b()\r\n at Umbraco.Core.Cache.CacheProviderExtensions.<>c__DisplayClass91.Id()\r\n at Umbraco.Web.PublishedCache.XmlPublishedCache.PublishedContentCache.DetermineRouteById(UmbracoContext umbracoContext, Boolean preview, Int32 contentId)\r\n at Umbraco.Web.PublishedCache.XmlPublishedCache.PublishedContentCache.GetRouteById(UmbracoContext umbracoContext, Boolean preview, Int32 contentId)\r\n at Umbraco.Web.Routing.DefaultUrlProvider.GetUrl(UmbracoContext umbracoContext, Int32 id, Uri current, UrlProviderMode mode)\r\n at Umbraco.Web.Routing.UrlProvider.<>cDisplayClass3.

    It looks like something to do with the format of the data I think (maybe the URLs)? The same DocTypes elsewhere in the site work fine, it just happens on a handful of sections on the site.

    Things I've tried:

    • Rebuilding Examine Indexes
    • Republishing Site
    • Googling the error message (it appears to be an Umbraco Googlewhack)

    Has anyone come across this before?

  • Stephen 767 posts 2273 karma points c-trib
    Oct 06, 2015 @ 16:01
    Stephen
    1

    Never seen before, would need to debug... is a database you could share?

  • Tim 1193 posts 2675 karma points MVP 3x c-trib
    Oct 06, 2015 @ 16:14
    Tim
    0

    For you, of course! I'm just about to head home, but I'll put a backup online for you tomorrow morning :)

  • Tim 1193 posts 2675 karma points MVP 3x c-trib
    Oct 07, 2015 @ 09:21
    Tim
    100

    I've figured out what the issue was. Back in 4.7, you were allowed a "-" in Document Type Aliases. In this particular site, all the main sections had an alias of "Section - Area Name", which became "Section-AreaName".

    It looks like you can't have "-" in the alias any more, so all of the aliases were renamed. Now they are all "SectionAreaName". So when the URL provider tries to get the URL from the XML cache, it can't find the DocType by the node name, because the alias in the XML is "Section-AreaName", but it's "SectionAreaName" in the Database.

    Just republishing the site doesn't fix the issue, as the XML in the ContentXml table still has the wrong alias. You have to individually republish all of the pages that had a "-" in the DocType, and THEN do a site republish. You could also do a full publish of the site, but in this case the site is 12,000+ nodes of content, so that might have been a bit slow!

    That was an interesting one to track down!

    :)

  • Stephen 767 posts 2273 karma points c-trib
    Oct 07, 2015 @ 11:08
    Stephen
    0

    OK, glad you figured it out. So yes, writing it down again here (in the hope it shows in search engines): the rules the govern aliases haved changed since 4.x. The objective being that an alias is a "safe" identifier for all purposes, including Xml element name, C# or JavaScript variable name, etc. As a consequences, some chars that used to be accepted cannot be accepted anymore.

    And this can screw old installs.

Please Sign in or register to post replies

Write your reply to:

Draft