Функция Azure не может найти документ openXML - PullRequest
0 голосов
/ 28 мая 2018

Я новичок в функциях Azure, и я пытаюсь раскрыть некоторые его особенности.

Поэтому я создал триггер функции blob, добавил ссылки на OpenXML SDK в project.json

"frameworks": {
"net46":{
  "dependencies": {
    "WindowsAzure.Storage": "7.0.0" ,
    "Open-XML-SDK" : "2.7.2",
    "DocumentFormat.OpenXml" : "2.8.1"

И в run.csx я добавил следующий код

using System;
using System.IO;
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;

public static  void Run (Stream myBlob, string name, TraceWriter log) 
{
            // *While we upload a blob, function start to execute*
            StreamReader reader = new StreamReader(myBlob);
            string S = reader.ReadToEnd();
            int numberofSlides = CountSlides(S);
            log.Info($"Number of slides = {numberofSlides}");

}

 // *here, using XML sdk we open our presentation without using Office*

 public static int CountSlides(string presentationFile)
        {
 using (PresentationDocument presentationDocument =PresentationDocument.Open(presentationFile, false))
            {
                return CountSlides(presentationDocument);
            }
        }

        public static int CountSlides(PresentationDocument presentationDocument)
        {
            if (presentationDocument == null)
            {
                throw new ArgumentNullException("presentationDocument");
            }

            int slidesCount = 0;

            PresentationPart presentationPart = presentationDocument.PresentationPart;
            if (presentationPart != null)
            {
                slidesCount = presentationPart.SlideParts.Count();
            }

            return slidesCount;
        }

Проблема в том, что, когда я загружаю .pptx, у меня ошибка в журнале

Исключительная ситуация при выполнении функции: Функции.BlobTriggerCSharp1.mscorlib: Исключение было сгенерировано целью вызова.DocumentFormat.OpenXml: не удалось найти документ.

Я загружаю файл .pptx с помощью обозревателя хранилищ Microsoft Azure и не могу понять, почему у меня возникает ошибка.

1 Ответ

0 голосов
/ 28 мая 2018

Вы используете следующий метод :

public static PresentationDocument Open(
    string path,
    bool isEditable
)

Первый параметр, который он принимает, - path, но вы передаете туда содержимое файла.Он пытается найти этот странный путь к файлу и выдает исключение.

Попробуйте использовать Перегрузка потока .

...