JIT Compiler обнаружил внутреннее ограничение. VS2008 - PullRequest
4 голосов
/ 13 октября 2009

Я использую XslCompiledTransform, потому что Microsoft говорит, что мне нужно использовать, поскольку 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 

Ответы [ 2 ]

8 голосов
/ 09 марта 2010

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

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

myTransform.Load(filename,XsltSettings.TrustedXslt,new XmlUrlResolver());
0 голосов
/ 17 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...