Vulnerability in EPiServer.Forms
I have just set up EPiServer CMO 2.1. on an upgraded EPiServer 6 R2 site.
In both development and test i get an annoying "Object reference not set to an instance of an object." error when clicking the page-selector for "orlginal page" or "Conversion page" and trying to expand a node in the tree-structure. I have been over the setup several times without finding an explanation or solution to this problem.
Anyone else have experienced similar problems, or got an idea to what can be the cause of this problem? Appears to be a configuration issue, but I am a little ouot of ideas.
.Net Framework 3.5 (not 4), runs ono Win7 (dev) and 2003 Server (test)
I'm trying to reproduce this issue by installing CMO 2.1 on site which was upgraded from CMS 6 to CMS 6 R2. Is it your case?
Do you have any exception details, like stack trace?
Yep. That is my case :-)
No stack trace is generated unfortunately, seems to be captured within the ajax post or something.
I have tryed to attach to the script and debug, but no success so far.
Please, check the web.config if you have this handler in /configuration/system.webServer/handlers:
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=22.214.171.124, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode" />
and this module in /configuration/system.webServer/modules:
<add name="ScriptModule" preCondition="managedHandler"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=126.96.36.199, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Thanx for the tip. Wil try this tomorrow and let you know.
Seems likely that this is some sort of configuration issue, as i tried to install a clean installation of CMO directly on e fresh 6 R2-site, and there the pagtree works fine.
They are both present in my config file. The error still remains unfortunately. Did a diff on the config files from a working site and made some adjustments, but still the same null-reference error...
I cannot reproduce this issue on upgraded sites both with Public and Demo/Alloy templates. It is possible to select original and conversion pages in LPO test settings.
Try to turn on logging on site and see if you get any error in log. You can add debug output or file appender and enable Debug level logging for site. Example configuration in EPiServerLog.config file:
<?xml version="1.0" encoding="utf-8"?>
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender">
<conversionPattern value="%date [%thread] %-5level %type.%method - %message%newline" />
<level value="Debug" />
<appender-ref ref="OutputDebugStringAppender" />
DebugView is nice tool to read logs for debug purposes. You can also try to find any related error in Windows Event Viewer.
Probably the issue is related to your specific site and how it is upgraded to last CMS version. Do you use any special data source/page provider?
You can also check section "Issues When Upgrading from EPiServer CMS 6" in following document: http://world.episerver.com/Documentation/Items/Installation-Instructions/EPiServer-CMS/Version-6/EPiServer-CMS-6-R2/Installation-Instructions---EPiServer-CMS-6-R2/#upgradeissues
... and one more option how you can try to catch exception: try to reproduce the issue in Firefox with FireBug. Make sure that console and network monitoring are enabled and you get all messanes/activity in that tabs.
Try to reproduce the problem and check if you have some information in FireBug console.
Check also all network requests and check response data and html if there is any errors (typically response with code 5XX or 4XX).
The only error logged that may be the cause of the problem is this:
ERROR  EPiServer.DataAbstraction.LanguageBranch.get_ResolvedIconPath - Could not resolve language icon path: util/images/flags/flag_no.gifEPiServer.Core.EPiServerException: Can't resolve non-rooted path 'util/images/flags/flag_no.gif' at EPiServer.UriSupport.ResolveUrlBySettings(String path) at EPiServer.DataAbstraction.LanguageBranch.get_ResolvedIconPath()
I tried to add te image in question to both the global EPiServer Util/[....]/images path, as well as a local folder under /util/images/flags, bus still no cake for me...
Another fun-fact: The page-picker works excellent under "Campaigns". It both expands and collapses just fine there. It is only under LPO it is acting out.
A bit strange as it is the exact same strukture that feeds the pageTree as far as I can see... Maybe different scripts?
Does page selector work fine both when you create campaign for all languages and when you create campaign for specific language?
Did you managed to get more information on client side using FireBug?
The property for Creating campaign is a bit different than the one used for the LPO that is malfunctioning. They both have page-picker logic though, but this only works for the campaign prop (regardless of language).
I am not able to debug this in firebug since this is an ajax-postback that is called from a compressed js-file, calling a method in a built in assembly (at least no success so far).
Another possible factor: The site in question is originally a migrated epi4-site, but all assemblies are present (done a complete compare of bin-folder), Web.config is also equal to the extent possible, and the episerver core files I expect to be handled by the installer...). The best idea so far is that it may be a built in script that is written for an older version of EPi, or something like that.
Otherwise still quite stuck :-)
Try to turn off script compression with following setting in episerver.shell section:
<clientResources debug="true" />
And please verify all requests in Firebug Network tab. It would be good to know if it is client or server error.
You should see failed requests with codes 5XX or 4XX in Firebug Network tab if it is server error during AJAX call.
EPiServer CMO requires viewState to be turned on for some reason.
To fix this if viewState is off in your site: Set <pages enableViewState="true"> for the "CMO" location path in your web.config file....