【问题标题】:Load method of XslCompiledTransform class throws StackOverflow ExceptionXslCompiledTransform 类的加载方法抛出 StackOverflow 异常
【发布时间】:2017-06-27 10:43:36
【问题描述】:

我正在尝试构建我们公司的项目和加载方法

XslCompiledTransform 抛出 StackOverflow 异常

这让我很烦,因为从字面上看,五分钟前我能够构建,现在没有更改模板或代码,它开始到 throw exceptions...

if (context.Request.IsLocal)
{
    var cc = new XslCompiledTransform();
    using (var xmlReader = new XmlTextReader(context.Server.MapPath("/templates/xhtmlmain.xsl"))
        { DtdProcessing = DtdProcessing.Parse })
    {
        cc.Load(xmlReader);
    }
    return cc;
}

【问题讨论】:

  • 看看blogs.msdn.microsoft.com/xmlteam/2011/09/26/…有没有帮助解决。
  • 谢谢,这确实有帮助。结果在我的情况下,由于我们的模板写得不好,无法重构,我不得不制作大于默认堆栈大小的线程。

标签: c# .net xslt


【解决方案1】:

在我的情况下,由于我们的模板编写不佳,无法重构,因此我不得不制作大于默认堆栈大小的线程。

这是代码:

 private static XslCompiledTransform LoadTransformations(HttpContext context, XslCompiledTransform cc)
    {

        using (var xmlReader = new XmlTextReader(context.Server.MapPath("/templates/xhtmlmain.xsl"))
        {
            DtdProcessing = DtdProcessing.Parse
        })
        {
            cc.Load(xmlReader);
        }
        return cc;
    }

    private static XslCompiledTransform CreateTransformation(HttpContext context)
    {
        var cc = new XslCompiledTransform();

        // Since our templates are most likely poorly written it takes
        // unusual amount of memory for a thread to handle the transformation
        // leaving the application throwing StackOverflow Exception.

        // This code creates different thread with 8MB stack size which actually succeeds in
        // transforming all the templates.

        // Creates custom thread and start it.  
        Thread t = new Thread(() => cc = GTHttpHandler.LoadTransformations(context, cc), 8 * 1024 * 1024);
        t.Start();

        // Ensure our transformation thread is finished before doing anything.
        t.Join();

        return cc;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多