12

I am installing the Reference Implementation for the first time on an SDL Tridion 2013 SP1 CM/CD server.

I have encountered a few problems and thought I would document the ones I fixed here and see if I could get some help on the ones I can't.

The two issues I solved:

  1. System.Web.Infrastructure missing when first loading the application (same error as here: https://stackoverflow.com/questions/12669206/error-microsoft-web-infrastructure-version-1-0-0-0-culture-neutral-publickeyt) - installing MVC4 on the server fixed this.
  2. Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified." when trying to publish "_System/Publish Settings" page. I think this was also caused by missing DLLs in the GAC. Restarting the TCM and Publisher solved this after installing MVC4 (I did restart the server after installing .NET 4.5.1)

The two I can't resolve:

  1. When accessing the web application I see:

    [ArgumentNullException: Value cannot be null.Parameter name: paths] System.IO.Path.Combine(String[] paths) +6626904 Sdl.Web.Common.Mapping.SemanticMapping.Load(String applicationRoot) +379 Sdl.Web.Common.Configuration.SiteConfiguration.Refresh() +304 Sdl.Web.Site.MvcApplication.Application_Start() +343`

    I thought this was to do with the settings not being published but I have restarted the app after getting them published and not got anywhere.

  2. I am unable to publish the "Publish HTML Design" page with the following error:

    'C:\Program' is not recognized as an internal or external command, operable program or batch file.

Has anyone else experienced these issues and can help?

Edit

After getting past 2 - due to installing 32 bit Node.js. I have the below error:

Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'

I have tried setting all the permissions I can think of on this folder including SYSTEM->Full Control, Everyone->Full Control. My TCMPublisher service is running as Local System.

Any ideas?

Update My final error was resolved by uninstalling Node.js 32 bit and installing Node.js 64 bit

  • Good tips on installing MVC 4 - I will add an issue to get the dependencies sorted out and documented properly – Will Price Sep 8 '14 at 19:15
  • I think that kicked some stuff into the GAC that wasn't there. Not sure we should really need to install it on the CM. I suspect System.Web.Infrastructure hasn't changed between MVC4 - 5 – Rob Stevenson-Leggett Sep 8 '14 at 20:55
  • The missing System.Web.Helpers assembly can be installed by the Web Pages 2 package (microsoft.com/en-us/download/details.aspx?id=34600) but then it still doesn't get added to the GAC I believe. Installing Visual Studio 2013 will bring it along and add it to the GAC. But we could look into merging it in the templating assembly rather than expecting it to be in the GAC. – Bart Koopman Sep 9 '14 at 11:28
  • Indeed - I am just testing a fix to remove System.Web.Helpers dependency from the templating stuff, and to include MS.Web.Infrastructure in the distributable - this removes any dependency other than .NET framework – Will Price Sep 9 '14 at 14:58
7
  1. looks like a problem with bin/config/cd_dynamic_conf.xml in your web application. Double check that the Publication element has the correct Id in here matching that of your 400 Example Site publication. If this is OK then its probably due to the configuration not being successfully published, perhaps due to the previous issue you had with Publish Settings page failing. Try republishing this page and see if that helps. Finally check the log file (defaults to C:\temp\logs\site.log, but is configured by Log.config in the site root) to see if there is anything there.

  2. is probably related to the configuration component which stores the location that node.js is installed. Check in the 100 Master/Building Blocks/Settings/Site Manager/HTML Design Configuration component that the path in there matches your install path for Node (as mentioned in the docs [login required]). By default its configured to C:\Program Files\nodejs\npm.cmd . Maybe you have it installed somewhere else?

Finally, check the comment on the docs here:

When publishing of the HTML design fails with Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm', then create the directory specified and give access to it for the Network Service user (or the user account your Publisher Service is running under).

UPDATE: I see that there is also a known issue for this:

  • 1
    So the first point worked - thanks. I can now see the site with no styles. The second point got me a bit further - I had installed the 32 bit version of node.js so the path included "(x86)". Now I have another error: Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'. Google shows this being due to node trying to run as Local Service which is what the publisher is set to run as. Never had a problem running as this account before. Did try setting it to run as me but that just got things stuck in the queue. Will have another bash tomorrow. – Rob Stevenson-Leggett Sep 8 '14 at 21:32
  • 1
    This issue is mentioned in a comment in the docs - I updated the answer with the solution – Will Price Sep 9 '14 at 7:07
  • 1
    That didn't solve my issue but a reinstall of Node.JS as 64 bit did. – Rob Stevenson-Leggett Sep 9 '14 at 10:56
  • 1
    @RobStevenson-Leggett the ENOENT error is a very common one with node.js and usually is solved by creating the directory manually. I've read some reports that it is actually a bug in node.js, maybe the 32 bit version of node.js you had was a buggy one, but good you have it solved now. – Bart Koopman Sep 9 '14 at 11:20
5

For the first error:

  1. When accessing the web application I see:

    [ArgumentNullException: Value cannot be null.Parameter name: paths] System.IO.Path.Combine(String[] paths) +6626904 Sdl.Web.Common.Mapping.SemanticMapping.Load(String applicationRoot) +379 Sdl.Web.Common.Configuration.SiteConfiguration.Refresh() +304 Sdl.Web.Site.MvcApplication.Application_Start() +343`

I have seen it happening due to multiple issues, but the root cause is that the Web Application cannot reach the resources

The following issues will cause that same error:

  • sqljdbc4.jar is not on the lib folder of the web application
  • The database information is not correct on cd_storage_conf.xml
  • "Publish HTML Design" page is not published or not correctly published
  • The application identity user is does not have permissions to write the serialized files on the application folder
  • Publication id or host domain not correct on cd_dynamic_conf

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.