Сбой реестра 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, IDictionary2 parameters) +156
2 параметра) +27
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
System.Web.Mvc.Async.WrappedAsyncResult2.CallEndDelegate(IAsyncResult asyncResult) +29
1. Конец () +49
System.Web.Mvc.Async.WrappedAsyncResultBase
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.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10
1. Конец () +49
System.Web.Mvc.Async.WrappedAsyncResultBase
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.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10
1. Конец () +49
System.Web.Mvc.Async.WrappedAsyncResultBase
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction (IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.b__1d (IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +36
1. Конец () +54
System.Web.Mvc.Async.WrappedAsyncResultBase
System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.b__15 (IAsyncResult asyncResult, контроллер контроллера) +12
System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +28
1. Конец () +54
System.Web.Mvc.Async.WrappedAsyncResultBase
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.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +36
1. Конец () +54
System.Web.Mvc.Async.WrappedAsyncResultBase
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 и второй попытаться зарегистрировать новый ключ, затем получить
вина как моя
Я надеюсь, что это помогает