azure .NET 461:异常,数组维度超出支持的范围

ppcbkaq5  于 2023-05-23  发布在  .NET
关注(0)|答案(1)|浏览(292)

我在两个不同的环境(Azure和本地计算机)中设置了一个.NET函数。
使用相同的输入参数执行它会得到不同的结果。它在本地计算机上成功,但遇到错误(OverflowException。阵列尺寸超出了azure工作站上支持的范围)。
是环境还是不正确的代码是更可能的原因?如果是前者,那么应该注意哪些环境设置?
使用Syncfusion 21.2.3将docx转换为pdf的代码

[Function("ConvertDocxToPdf")]
        public HttpResponseData ConvertDocxToPdf([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req)
        {
            //Gets the input Word document as stream from request
            Stream stream = req.Body;

            //Loads an existing Word document
            WordDocument document = new WordDocument(stream);

            document.Background.Type = BackgroundType.NoBackground;
            document.ChartToImageConverter = new Syncfusion.OfficeChartToImageConverter.ChartToImageConverter();

            document.AcceptChanges();

            //Creates an instance of the DocToPDFConverter
            DocToPDFConverter converter = new DocToPDFConverter();

            converter.Settings = new DocToPDFConverterSettings()
            {
                EmbedFonts = true,
                RecreateNestedMetafile = true
            };

            //Converts Word document into PDF document
            PdfDocument pdfDocument = converter.ConvertToPDF(document);
            //Releases the resources occupied by DocToPDFConverter instance
            converter.Dispose();
            //Closes the Word document
            document.Close();

            MemoryStream memoryStream = new MemoryStream();
            //Saves the PDF file 
            pdfDocument.Save(memoryStream);
            //Closes the PDF document
            pdfDocument.Close();

            //Reset the memory stream position
            memoryStream.Position = 0;
            //Create the response to return
            
            HttpResponseData response = HttpResponseData.CreateResponse(req);
            response.Body = memoryStream;
            return response;
        }
hkmswyz6

hkmswyz61#

是的,错误是由环境差异引起的。

  • 检查本地安装的.NET Framework版本和Azure中使用的.NET Framework版本。
  • 同时检查两种环境中使用的Syncfusion版本。
  • 而且有可能错误是由代码本身引起的。检查Word文档的大小。

错误消息显示数组维度超出了支持的范围,这可能是由大型文档引起的。
通过将输入文档分割成更小的块并单独处理它们也可以解决这个问题。
能够成功转换本地和Azure。

我用了同步融合NuGets

有关详细信息,请参阅Syncfusion BlogMSDoc.

相关问题