Just taken over an Umbraco site which is running on Umbraco 4.0.2.1 and using XSLT Search version 2.7. When the search results page is loaded the following is displayed:
Error reading XSLT file: \xslt\XSLTsearch.xslt
Using umbDebugShowTrace=true, I get the following:
Error loading XSLT XSLTsearch.xslt Could not load file or assembly 'pf8xdnml, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied. at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity) at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly() at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang) at System.Xml.Xsl.Xslt.Scripts.CompileScripts() at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler) at System.Xml.Xsl.Xslt.QilGenerator.CompileStylesheet(Compiler compiler) at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil) at System.Xml.Xsl.XslCompiledTransform.CompileXsltToQil(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver) at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver) at System.Xml.Xsl.XslCompiledTransform.Load(XmlReader stylesheet, XsltSettings settings, XmlResolver stylesheetResolver) at umbraco.macro.CreateXsltTransform(XmlTextReader xslReader, Boolean debugMode) at umbraco.macro.getXslt(String XsltFile) at umbraco.macro.loadMacroXSLT(macro macro, Hashtable attributes, Hashtable pageElements)
XSLTsearch doesn't load any external dlls or dependencies. Instead, this is likely something that Umbraco 4.0.2.1 is doing when attempting to compile the xslt itself.
From the stack trace it seems the site's application pool identity/owner (network service often times, but check it in IIS for the application pool identity to be sure) doesn't have permission to read the pf8xdnml resource. Double-check the file permissions and it should be resolved.
FWIW, my guess is that any xslt file that needs to be saved in the umbraco back office will give the same error.
Thanks for the reply, I supplied the hosting company with a link to the standard Umbraco permissons (http://our.umbraco.org/wiki/reference/files-and-folders/permissions). Which they have checked and they came back with the following:
"We can't check permissions unless we know what files Umbraco is trying to access. What file contains that assembly? Specifically the pf8xdnml resource.
We run all our sites on unique application pools for security purposes. The worker process for each app pool has permissions to run any assembly in the site directory structure, plus any standard .net class so I don't know why there would be an issue with this one assembly unless it's in an unusual location. Would it be possible to get some clarification on this."
I've never heard of the pf8xdnml assembly. I'm assuming it's in the /bin folder but I don't know. It would definitely be something within the site's folder structure somewhere. So assuming the hosting company is competent that would seem to eliminate the question of file permissions.
I can think of two ways to move forward.
1. Grab a copy of the site and database and run it locally. If the problem doesn't exist locally it's a hosting problem. If it does show up locally at least it will be easier to debug.
2. Go to any of the existing xslt files on the site from within the Developer section of Umbraco, and click the save icon (being sure the 'skip testing' box is NOT ticked). Does it save properly or give an error? If no error, go to the xsltsearch.xslt file and save it. Again, any error?
Any chance the xsltsearch.xslt file has been modified from its original version? 2.8 is the latest for a v4.0 site... you could try using the 2.8 version. (do save the current file just in case)
Managed to resolve the issue by adding the following to the web config
<add key="umbracoDebugMode" value="false" />
It looks like the issue was casued by the inline c# of the XSLT creating a temp ddl in the temp folder. Your post (http://blog.percipientstudios.com/2009/9/21/advanced-xslt-with-net-namespaces.aspx) pointed me in the right directioin.
XSLT Error
Hi,
Just taken over an Umbraco site which is running on Umbraco 4.0.2.1 and using XSLT Search version 2.7. When the search results page is loaded the following is displayed:
Error reading XSLT file: \xslt\XSLTsearch.xslt
Using umbDebugShowTrace=true, I get the following:
Thanks,
Eddie
XSLTsearch doesn't load any external dlls or dependencies. Instead, this is likely something that Umbraco 4.0.2.1 is doing when attempting to compile the xslt itself.
From the stack trace it seems the site's application pool identity/owner (network service often times, but check it in IIS for the application pool identity to be sure) doesn't have permission to read the pf8xdnml resource. Double-check the file permissions and it should be resolved.
FWIW, my guess is that any xslt file that needs to be saved in the umbraco back office will give the same error.
cheers,
doug.
Hi Doug,
Thanks for the reply, I supplied the hosting company with a link to the standard Umbraco permissons (http://our.umbraco.org/wiki/reference/files-and-folders/permissions). Which they have checked and they came back with the following:
We run all our sites on unique application pools for security purposes. The worker process for each app pool has permissions to run any assembly in the site directory structure, plus any standard .net class so I don't know why there would be an issue with this one assembly unless it's in an unusual location. Would it be possible to get some clarification on this."
Any ideas on the pf8xdnml resource?
Thanks,
Eddie
Hi, Eddie,
I've never heard of the pf8xdnml assembly. I'm assuming it's in the /bin folder but I don't know. It would definitely be something within the site's folder structure somewhere. So assuming the hosting company is competent that would seem to eliminate the question of file permissions.
I can think of two ways to move forward.
1. Grab a copy of the site and database and run it locally. If the problem doesn't exist locally it's a hosting problem. If it does show up locally at least it will be easier to debug.
2. Go to any of the existing xslt files on the site from within the Developer section of Umbraco, and click the save icon (being sure the 'skip testing' box is NOT ticked). Does it save properly or give an error? If no error, go to the xsltsearch.xslt file and save it. Again, any error?
Any chance the xsltsearch.xslt file has been modified from its original version? 2.8 is the latest for a v4.0 site... you could try using the 2.8 version. (do save the current file just in case)
cheers,
doug.
Hi Doug,
All XSLT files save with no errors, including the xsltsearch.xslt file.
The xslt error still happens when updating to 2.8. The XSLT looks standard.
With some further tests, the name of the assembly changes each time. So will grab a copy of the site and see if the problem persists.
Thanks,
Eddie
Hi Doug,
Managed to resolve the issue by adding the following to the web config
It looks like the issue was casued by the inline c# of the XSLT creating a temp ddl in the temp folder. Your post (http://blog.percipientstudios.com/2009/9/21/advanced-xslt-with-net-namespaces.aspx) pointed me in the right directioin.
Thanks again,
Eddie
is working on a reply...