Copied to clipboard

Flag this post as spam?

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


  • Javier Barrera 34 posts 85 karma points
    Jul 06, 2011 @ 00:24
    Javier Barrera
    0

    Redirecting to noNodes.aspx in Umbraco 4.7

    In the past two weeks since I launched a client's site, I've got the noNodes.aspx page (/config/splashes/noNodes.aspx) about 6 times while loading the page.

    I found an article on our.umbraco.org that specifies that it almost always has to do with permissions. I've also taken a look at another article that has a nice workaround to automatically publish the site. This seems to work great for sites running Umbraco 4.6 and below (and two other sites that I manage). I have 16 total Umbraco sites, all ranging from 4.5 to 4.7, that I manage with my hosting provider. In the past year since I've been using Umbraco, only three different sites seem to have this problem. The three sites don't have anything 100% in common as one is running IIS 6 and the other two are on IIS7; with the Umbraco versions being 4.5, 4.6 and 4.7. Each site (with the possible exception of the once site on IIS 6) runs the site in its own application pool.

    With this particular issue I'm using Umbraco 4.7 on IIS7.5 (Windows 2008 x64). The environment has .NET 4.0 (required for Umbraco 4.7) and the application pool is running in 64 bit mode. The database is SQL 2008 and is located in the same datacenter. The noNodes.aspx fix doesn't seem to work and it simply constantly tries to re-publish.

    I've tried soling the issue by recycling the application pool, connecting to the database with SQL Management Studio (to make sure that the database is up), and the only thing that ends up working is by logging into the back end and manually re-publishing.

    My question is, has anything changed in Umbraco 4.7 that would make this workaround not function? Is it really permissions issues that are causing this, or is it an issue with the site not being able to connect to the database (which I have duplicated in my test environment by revoking connections to the database). While the database issue makes the most sense, is there a way that I can prevent this from happening if the database can't be accessed by .NET (even if I can via the Management Studio)?

  • Javier Barrera 34 posts 85 karma points
    Jul 06, 2011 @ 00:27
    Javier Barrera
    0

    I have also attached the code that I use to re-publish the site; since I had a bit of a problem with the code in the above linked article. My modifications also force the page to re-direct via a META refresh - since the Response.Redirect seemed to crash the application pool.

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Xml;
    using umbraco;
    using umbraco.IO;
    using umbraco.cms.businesslogic.web;

    public partial class config_splashes_noNodes : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!loadCache())
    {
    Document.RePublishAll();
    library.RefreshContent();
    }

    HtmlMeta redirectMeta = new HtmlMeta();
    redirectMeta.HttpEquiv = "refresh";
    redirectMeta.Content = "2;url=http://" + Request.Url.DnsSafeHost + "/";
    Page.Header.Controls.Add(redirectMeta);
    }

    protected bool loadCache()
    {
    Server.ScriptTimeout = 100000;

    if (System.IO.File.Exists(IOHelper.MapPath("/App_Data/umbraco.config")))
    {
    var cacheFile = IOHelper.MapPath("/App_Data/umbraco.config");

    var r = XmlReader.Create(cacheFile, new XmlReaderSettings() { ProhibitDtd = false });
    var d = new XmlDocument() { };
    d.Load(r);

    var n = d.SelectSingleNode("//root");

    if (n.ChildNodes.Count != 0)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    else
    {
    return false;
    }
    }
    }
Please Sign in or register to post replies

Write your reply to:

Draft