Сбой реестра Office Interop PowerPoint E_NOINTERFACE

Не удалось преобразовать COM-объект типа "System.__ComObject" в интерфейс типа события "Microsoft.Office.Interop.PowerPoint.PresEvents_Event". Эта операция завершилась неудачно, поскольку вызов QueryInterface в компоненте COM для интерфейса с IID '{9826398E-2574-3EDD-9717-A913EE28A41D}' завершился неудачно из-за следующей ошибки: "Такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)")', а компонент COM не поддерживает исходный интерфейс с IID '{91493463-5A91-11CF-8700-00AA0060263B}'.

У меня есть два смиларских сайта, которые конвертируют PPTX в pdf. Они используют тот же код и те же библиотеки для работы. Один сайт использовался как концептуальный и экспериментальный, а другой - для рекламы.

Экспериментальный работает отлично, а другой имеет ошибку.

Я использую тот же код, тот же DLL, но он никогда не работает

Два сайта работают в одном пуле приложений.

код для преобразования:

var powerpointApp = new Microsoft.Office.Interop.PowerPoint.Application();

var powerpointDocument = powerpointApp.Presentations.Open(@"C:\PowerPoint.pptx", 
                Microsoft.Office.Core.MsoTriState.msoTrue, //ReadOnly
                Microsoft.Office.Core.MsoTriState.msoFalse, //Untitled
                Microsoft.Office.Core.MsoTriState.msoFalse); //Window not visible during converting

powerpointDocument.ExportAsFixedFormat(@"C:\NewPDFFile.pdf", 
                Microsoft.Office.Interop.PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF);

powerpointDocument.Close(); //Close document
powerpointApp.Quit();

Трассировки стека:

System.StubHelpers.InterfaceMarshaler.ConvertToManaged (IntPtr pUnk, IntPtr itfMT, IntPtr classMT, флаги Int32) +0
Microsoft.Office.Interop.PowerPoint.Presentations.Open (Строка FileName, MsoTriState ReadOnly, MsoTriState Без названия, MsoTriState WithWindow) +0
AB.Hybrid.WebSite.Controllers.ViewerController.tryConvert () +157
lambda_method (Closure, ControllerBase, Object[]) +62
System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object[]) +14
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) +156
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметра) +27
System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
System.Web.Mvc.Async.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) +34
System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d () +50 System.Web.Mvc.Async. <> C__DisplayClass46.b__3f() +225 System.Web.Mvc.Async.<> C__DisplayClass33.b__32(IAsyncesesesesResult) 10
System.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters (IAsyncResult asyncResult) +34
System.Web.Mvc.Async. <> C__DisplayClass2b.b__1c() +26 System.Web.Mvc.Async.<> C__DisplayClass21.b__1e (IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction (IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.b__1d (IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +54
System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.b__15 (IAsyncResult asyncResult, контроллер контроллера) +12
System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +54
System.Web.Mvc.Controller.EndExecute (IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute (IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.b__5 (IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase
1. Конец () +54
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +31 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +9651796 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) +155

1 ответ

Решение

Фактическая причина проблемы основана на взаимодействии DLL.

Я изменил "Встраивать типы взаимодействия в Ложь" из свойств PowerPoint dll refenrance

наконец-то это сработало

Я предполагаю, что два или более проекта использовали одну и ту же DLL с опцией встраивания причиной коллизии на

Реестр ссылок на Windows и второй попытаться зарегистрировать новый ключ, затем получить

вина как моя

Я надеюсь, что это помогает

Другие вопросы по тегам