Copied to clipboard

Flag this post as spam?

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


  • Drew 165 posts 340 karma points
    Oct 31, 2011 @ 13:18
    Drew
    0

    Bug 1.1.3 - breaks 'Publish At' feature in Umbraco

    On both 4.7 and 4.7.1 when using Embedded Content on a document type such as a page, if you set a "publish at" date time - it doesn't work.

    Pages published fine manually.

    The error logged is:

    Error publishing node: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.     at TheFarm.Umbraco.EmbeddedContent.DataEditor.Initialize()     at TheFarm.Umbraco.EmbeddedContent.DataEditor..ctor()     --- End of inner exception stack trace ---     at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)     at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)     at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)     at System.Activator.CreateInstance(Type type, Boolean nonPublic)     at umbraco.cms.businesslogic.datatype.controls.Factory.GetNewObject(Guid DataEditorId)     at umbraco.cms.businesslogic.property.Property.MakeNew(PropertyType pt, Content c, Guid versionId)     at umbraco.cms.businesslogic.Content.createNewVersion()     at umbraco.cms.businesslogic.web.Document.PublishWithResult(User u)     at umbraco.presentation.publishingService.CheckPublishing(Object sender)

     

    Any ideas?
    Looks like Embedded Content is throwing an exception and the publish process is bombing out?

     

  • Drew 165 posts 340 karma points
    Oct 31, 2011 @ 15:49
    Drew
    0

    Checked this out and it's definitely an issue with Embedded Content.

    A document type instance that does not have an Embedded Content property publishes fine using the 'Publish At' feature, but w doc type that has a property using Embedded Media data type won't (and logs the above error).

    (I also tested adding an Embedded Content property to a doc type that uses 'Publish At' fine, as soon as I do, 'Publish At' stops working and we get the error (as in original post) in the Umbraco log :(  )

     

  • Tim 1193 posts 2675 karma points MVP 4x c-trib
    Nov 01, 2011 @ 13:02
    Tim
    0

    +1 on this, I'm getting the same error when trying to publish using publish at on Documents with Embedded Content in. Running on 4.7.1.

  • Drew 165 posts 340 karma points
    Nov 04, 2011 @ 14:06
    Drew
    2

    Found the bug.

    In DataEditor.cs, of the Initialize() method, at line 95 there's the following call to get the full path of the umbraco node service:

     

                var filePath = HttpContext.Current.Server.MapPath("~/umbraco/webservices/UmbracoNodeNameService.asmx");
    

     

    This value is then used to check that the service exists, etc, before anything else proceeds.

    The call to HttpContext.Current works fine when you Publish a page manally - but when a page publish is triggered by the timer event (by using Publish At), there is no HttpContext.Current - it's null.

    So this call fails, the exception bubbles up to the top of the stack and the page fails to publish.

    A very simple (and tested) solution is to replace the MapPath call to a version that works regardless of a Context.
    So simply replace it with:

     var filePath = HostingEnvironment.MapPath("~/umbraco/webservices/UmbracoNodeNameService.asmx"

    And it works fine :)

     

     

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies