Компилятор JIT столкнулся с внутренним ограничением. VS2008

Я использую XslCompiledTransform, потому что Microsoft говорит мне, что мне нужно использовать XslTransform, поскольку XslTransform устарел.

<ExactDatetime>200-02-02</ExactDatetime>) работает с использованием XslTransform

<ExactDatetime>200-02-02</ExactDatetime>) сбой при использовании XslCompiledTransform

<ExactDatetime></ExactDatetime>) работает с использованием XslTransform

Работает:

XslTransform xslDoc = new XslTransform(); 
xslDoc.Load(xslPath); 
xslDoc.Transform(doc, Response.Output); 

Сбой с JIT (при использовании даты пример 200-02-02)

XslCompiledTransform xslDoc = new XslCompiledTransform(); 
xslDoc.Load(xslPath); 
xslDoc.Transform(doc, new XmlTextWriter(Response.Output)); 

Компилятор JIT столкнулся с внутренним ограничением.

Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidProgramException: JIT-компилятор обнаружил внутреннее ограничение.

Ошибка источника:

Line 33:            //xslDoc.Transform(doc, Response.Output); 
Line 34: 
Line 35:             xslDoc.Transform(doc, new XmlTextWriter(Response.Output)); 
Line 36:         } 
Line 37:   } 

Исходный файл: c:\shahid\ccr_test\test1\Default.aspx.cs Строка: 35

Трассировки стека:

[InvalidProgramException: JIT Compiler encountered an internal limitation.] 
   <xsl:template name="date:_format-date">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, IList`1 year, IList`1 month, IList`1 day, IList`1 hour, IList`1 minute, IList`1 second, IList`1 timezone, IList`1 pattern) +0 
   <xsl:template name="date:format-date">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator date-time, XPathNavigator pattern) +5170 
   <xsl:template match="DateTime" name="dateTime">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current, IList`1 dt, XPathNavigator fmt) +12397 
   <xsl:template match="/">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current) +46057 
   Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) +91 
   Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime) +28 
   System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results) +88 
   System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter) +193 
   System.Xml.Xsl.XmlILCommand.Execute(XmlReader contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results) +28 
   System.Xml.Xsl.XslCompiledTransform.Transform(String inputUri, XmlWriter results) +81 
   _Default.Button1_Click(Object sender, EventArgs e) in c:\shahid\ccr_test\test1\Default.aspx.cs:35 
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110 
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 

person Community    schedule 13.10.2009    source источник
comment
Ваши даты должны быть 2000-02-02?   -  person SLaks    schedule 13.10.2009
comment
Что ваш xsl делает с этим узлом ‹ExactDatetime›?   -  person Hans Kesting    schedule 13.10.2009


Ответы (2)


У меня была та же проблема, и я думаю, что это была та же таблица стилей (CCR).

Проблема заключалась в том, что скомпилированный XSLT запрещал доступ к функции document() и неправильно обрабатывал ошибку. При вызове XslCompiledTransform.Load() передайте объект XsltSettings, позволяющий использовать функцию документа. Что-то вроде этого:

myTransform.Load(filename,XsltSettings.TrustedXslt,new XmlUrlResolver());
person Frank Racis    schedule 09.03.2010
comment
Удивительно, та же проблема, тот же CCR.xslt, то же решение. Большое спасибо! Кстати, здесь есть обновленная версия функции date:format-date: exslt.org/date/functions/format-date/ - person Brandon Boone; 26.01.2012

Похоже, что функция format-date срабатывает при неверном значении даты, чего раньше не было. Не зная более подробной информации, трудно теоретизировать о причине. Вы импортируете библиотеки EXSLT или используете встроенные в MSXML?

В любом случае вам может понадобиться обернуть эти вызовы служебной функцией, которая проверяет значения перед вызовом format-date, чтобы предотвратить исключение.

person John Lewin    schedule 17.10.2009