Ошибка взаимодействия 80010001 Вызов был отклонен вызываемым пользователем при генерации PPTX - PullRequest
0 голосов
/ 26 сентября 2018

Я конвертирую некоторые изображения в слайд ppt и загружаю ppt после его завершения.с помощью Microsoft.Office.Interop.PowerPoint.пока я запускаю приложение, оно работает как положено, но при развертывании на той же машине IIS выдает следующую ошибку.

PreparePPT: System.Runtime.InteropServices.COMException (0x80010001): Не удалось получить фабрику классов COM для компонента с CLSID {91493441-5A91-11CF-8700-00AA0060263B} из-за следующей ошибки: 80010001Вызов был отклонен вызываемым абонентом.(Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)).в System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject (RuntimeType objectType) в System.Runtime.Remoting.Activation.ActivationServices.CreateInstance (RuntimeType serverType) в System.Runtime.Rutification.TypeTimes., булева bNewObj) при System.RuntimeTypeHandle.CreateInstance (типа RuntimeType, Boolean, Boolean publicOnly NOCHECK, Boolean & canBeCached, RuntimeMethodHandleInternal & CTOR, Boolean & bNeedSecurityCheck) в System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, булевой skipCheckThis, булевой fillCache, StackCrawlMark & ​​stackMark) в системе.RuntimeType.CreateInstanceDefaultCtor (логическое значение publicOnly, логическое значение skipCheckThis, логическое значение fillCache, StackCrawlMark & ​​stackMark) в System.Activator.CreateInstance (тип-тип, логический тип-непубличный) в System.Activator.CpletePortPtoTentInstImageDetails) в D: \ Project \ ExporttoPPT \ appWebService.asmx.cs: строка 293

Я передал привилегии NETWORK SERVICES для доступа к удаленному запуску, активации.Но все же я получаю ту же ошибку.Мой пример кода

public string PreparePPT(List<ImageDetails> ImageDetails)
    {
        try
        {
            string path = "//FilesStorage//TempFiles//";
            string fileName = "Dashboard.pptx";
            string fullPath = Server.MapPath(path + fileName);
            Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
            Microsoft.Office.Interop.PowerPoint.Slides slides;
            Microsoft.Office.Interop.PowerPoint.Slide slide;
            Microsoft.Office.Interop.PowerPoint.TextRange objText;
            Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoTrue);
            int inCount = 1;
            foreach (var item in ImageDetails)
            {
                string strImgPath = Server.MapPath("Images");
                string base64 = item.Data.Split(',')[1];
                byte[] bytes = Convert.FromBase64String(base64);
                System.Drawing.Image image;
                using (MemoryStream ms = new MemoryStream(bytes))
                {
                    image = System.Drawing.Image.FromStream(ms);
                    strImgPath = Server.MapPath("//FilesStorage//TempFiles//") + "Image_" + inCount + ".png";
                    image.Save(strImgPath);
                    item.ImagePath = strImgPath;
                    ms.Close();
                }
                Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout = pptPresentation.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];
                // Create new Slide
                slides = pptPresentation.Slides;
                slide = slides.AddSlide(inCount, customLayout);
                // Add title
                objText = slide.Shapes[1].TextFrame.TextRange;
                objText.Text = item.Title;
                objText.Font.Name = "Arial";
                objText.Font.Size = 22;
                objText = slide.Shapes[2].TextFrame.TextRange;
                Microsoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes[2];
                slide.Shapes.AddPicture(item.ImagePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, shape.Left, shape.Top, shape.Width, shape.Height);
                inCount++;
            }
            pptPresentation.SaveAs(fullPath, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, Microsoft.Office.Core.MsoTriState.msoTrue);
            pptPresentation.Close();
            pptApplication.Quit();
            foreach (var item in ImageDetails)
            {
                if (File.Exists(item.ImagePath))
                {
                    File.Delete(item.ImagePath);
                }
            }
            return fullPath;
        }
        catch (Exception ex)
        {
            return "Error Occured: PreparePPT - " + ex.Message.ToString();
        }
    }

Любая помощь будет высоко оценена.

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