Existing Umbraco installation fails after installing Articulate blog (or anything that schedules posts)

2017-04-06 13:42:45,673 [P3048/D15/T45] ERROR Umbraco.Web.Scheduling.KeepAlive – Failed (at “http://(domain)/umbraco”).
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Umbraco.Web.Scheduling.KeepAlive.<PerformRunAsync>d__4.MoveNext()

This may be related to: http://issues.umbraco.org/issue/U4-5965 :

“Create config to explicitly set the ‘base url’ for a website that is not running as a load balanced site – used for scheduled tasks/publishing/keepalive”

Setting umbracoApplicationUrl=”https://(domain name)/Umbraco” in Config/umbracoSettings.config …and restarting the application pool and the website has fixed the problem; the site is responsive once more and the required  nodes have been published:
2017-04-06 14:15:00,997 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Blog’ with Id ‘3316’ has been published.
2017-04-06 14:15:01,544 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Archive’ with Id ‘3317’ has been published.
2017-04-06 14:15:01,638 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Test post’ with Id ‘3320’ has been published.
2017-04-06 14:15:01,716 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Authors’ with Id ‘3318’ has been published.
2017-04-06 14:15:01,779 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Demo author’ with Id ‘3319’ has been published.



LetsEncrypt with Umbraco – serving static, extensionless URLs within an Umbraco installation.

Situation; you have a bunch of domains and subdomains which are secured using Letsencrypt. by default, Letsencrypt will try to put a static, extensionless file like named e.g.  “jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo” in a “/.well-known/acme-challenge/” subfolder of the site root.

If that file isn’t reachable and browsable – the Letsencrypt acme servers won’t authenticate your domain. Letsencrypt will warn you at this point and recommend re-ordering the IIS Handler Mappings to promote the “StaticFile” handler above the three “ExtensionlessUrl” handlers.

However even if you reorder the handlers, you’ll still see a 404-page not found error when browsing directly to the static file’s URL e.g. http://yourdomain/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo

If you check the logs in your Umbraco /App_Data/Logs directory, you may see “Status code is 404 yet TrySkipIisCustomErrors is false – IIS will take over”

IIS won’t log anything useful though.

What’s happening can only be seen once you tell Umbraco not to pass error handling onto IIS; so edit /Config/umbracoSettings.config and set trySkipIisCustomErrors=true

This will force Umbraco to print its own, more informative error, confirming the problem:

No umbraco document matches the url ‘/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo’

Finally; to fix the problem and exclude the /.well-known/acme-challenge/ directory from Umbraco’s control, you need to edit Umbraco’s main Web.config file, and add the following:

<add key=”umbracoReservedPaths” value=”~/umbraco,~/install/,~/.well-known/,~/.well-known/acme-challenge/” />

The next time you load http://yourdomain/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo in a browser, you should see a plain-text string of json that the acme server needs to authenticate your control of the domain for which you’re requesting the certificate.

Retrying the Letsencrypt client at this point should be successful.

Have a coffee and don’t forget to revert the logging and error handling changes you just made.


Umbraco fails to update log in App_Data/Logs directory – IIS 8.x – Fixed

Umbraco logs a great deal of helpful debugging information to its /App_Data/Logs subdirectory. If the log files aren’t present or haven’t been added to since a server migration, check that the App Pool user has modify access to the directory tree.

If your Umbraco application is running in an Application pool named “Umbraco Blog Dev” the automatically-generated App Pool user would also be named “Umbraco Blog Dev”

If the”Umbraco Blog Dev” user is missing entirely, add it as “IIS AppPool\Umbraco Blog Dev” in the usual permissions dialogue and add modify access afterwards.

Note: the “IIS AppPool…” prefix is essential, as is the server-name Location scope; Windows won’t find the virtual user without both present.