System.BadImageFormatException after adding line to XSLT for a DVWP
-
04-10-2020 - |
Вопрос
I'm getting a peculiar error after adding a line to my XSLT used in my DVWP. I can't paste all my XSL here but let me explain like so:
- I have an .xslt file with 284 lines
- My DVWP references it through the XslLink property
- The DVWP is added to a WebPart page
- The page loads fine
So far so good...
- I add one
xsl:value-of
line to my XSLT- It really doesn't matter what the line is
- It can be
<xsl:value-of select="@someField" />
- It can be
<xsl:value-of select="substring-after(@anotherField, '.')" />
- The page will now show an error:
Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.
Strange...
- If I remove everything from the XSLT and leave just that one line then there is no
- If I remove other lines (say 30 of the 284) and keep that one line then there is no error
So I'm 100% sure it has nothing to do with what line I'm adding or the XSLT.
I looked through the SharePoint logs for the correlation ID of the error I'm getting and compared with the logs of when I don't have the error.
I'm no expert at reading SP logs but there are only two main differences I see. The error log has these two entries:
Videntityinfo::isFreshToken reported failure.
and
Error while executing web part:
System.BadImageFormatException:
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at <xsl:template match="Row">(XmlQueryRuntime , XPathNavigator )
at <xsl:apply-templates>(XmlQueryRuntime , XPathNavigator )
at <xsl:template name="nacho">(XmlQueryRuntime , XPathNavigator )
at Root(XmlQueryRuntime )
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter)
at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results)
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.ExecuteTransform(XslCompiledTransform xslCompiledTransform, XsltArgumentList xmlArguments, Boolean bDeferExecuteTransform)
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)
(It was actually split in two lines and not formatted so I cleaned it up for readability.)
According to what I've read online Videntityinfo
is a permission error and System.BadImageFormatException
is trying to use a x32 DLL in place of an x64 DLL.
What I cannot figure out is how it could be either of those issues if the page loads fine other times.
Or is there something else maybe wrong?
Решение
I was able to learn that the issue was it was taking too long to process the XSLT. Once I optimized the XSLT code the problem went away. I think there is a timeout setting somewhere that can be changed too.