Office Interop PowerPoint E_NOINTERFACE注册表错误
本文关键字:NOINTERFACE 注册表 错误 Interop PowerPoint Office | 更新日期: 2023-09-27 18:15:17
无法强制转换类型为"System"的COM对象__ComObject"到事件接口类型"Microsoft。办公室Interop。PowerPoint。PresEvents_Event。此操作失败,因为对IID为"{9826398E-2574-3EDD-971-A913EE28A41D}"的接口的COM组件的QueryInterface调用由于以下错误而失败:"不支持此类接口(HRESULT:0x80004002(E_NOINTERFACE(异常(",并且COM组件不支持IID为{91493463-5A91-11CF-8700-00AA0060263B}的源接口
我有两个smilar网站,可以将PPTX转换为pdf。它们使用相同的代码和相同的dll进行操作。一个网站被用作概念和实验的教授,但另一个是商业的。
从经验上讲,一个是完美的,但另一个有缺点。
我使用相同的代码相同的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();
堆栈跟踪:
系统。StubHelpers。接口编组器。ConvertToManaged(IntPtr pUnk,IntPtr itfMT、IntPtr classMT、Int32标志(+0
微软办公室Interop。PowerPoint。演示文稿。打开(字符串FileName,MsoTriState只读,MsoTriState无标题,MsoTripStateWithWindow(+0
AB.Hhybrid.WebSite.Controllers.ViewerController.tryConvert((+157
lambda_method(闭包、ControllerBase、Object[](+62
系统网状物Mvc。ActionMethodDispatcher。执行(ControllerBase控制器,对象[]参数(+14
系统网状物Mvc。反射的ActionDescriptor。执行(ControllerContext控制器上下文,IDictionary2 parameters) +156
2参数(+27
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
系统网状物Mvc。异步。AsyncControllerActionInvoker.b_39(IAsyncResultasyncResult,ActionInvocation innerInvokeState(+22
系统网状物Mvc。异步。WrappedAsyncResult2.CallEndDelegate(IAsyncResult asyncResult) +29
1.End((+49
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。异步。AsyncControllerActionInvoker。EndInvokeActionMethod(IAsyncResultasyncResult(+34
系统网状物Mvc。异步。AsyncInvocationWithFilters.b_3d((+50系统。网状物Mvc。异步<>c_DisplayClass46.b_3f((+225系统。网状物Mvc。异步<>c_DisplayClass33.b_32(IAsyncResult asyncResult(+10
系统网状物Mvc。异步。WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10
1.End((+49
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。异步。AsyncControllerActionInvoker。EndInvokeActionMethodWithFilters(IAsyncResultasyncResult(+34
系统网状物Mvc。异步<>c_DisplayClass2b.b_1c((+26系统。网状物Mvc。异步<>c__DisplayClass21.b__1e(IAsyncResultasyncResult(+100
系统网状物Mvc。异步。WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10
1.End((+49
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。异步。AsyncControllerActionInvoker。EndInvokeAction(IAsyncResultasyncResult(+27
系统网状物Mvc。控制器.b_1d(IAsyncResultasyncResult,ExecuteCoreState-innerState(+13
系统网状物Mvc。异步。包装同步无效1.CallEndDelegate(IAsyncResult asyncResult) +36
1.End((+54
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。控制器。EndExecuteCore(IAsyncResult asyncResult(+39系统网状物Mvc。控制器.b_15(IAsyncResultasyncResult,控制器控制器(+12
系统网状物Mvc。异步。包装同步无效1.CallEndDelegate(IAsyncResult asyncResult) +28
1.End((+54
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。控制器。EndExecute(IAsyncResult asyncResult(+29
系统网状物Mvc。控制器。系统网状物Mvc。异步。IAsyncController。EndExecute(IAsyncResultasyncResult(+10
系统网状物Mvc。MvcHandler.b_5(IAsyncResultasyncResult,ProcessRequestState innerState(+21
系统网状物Mvc。异步。包装同步无效1.CallEndDelegate(IAsyncResult asyncResult) +36
1.End((+54
System.Web.Mvc.Async.WrappedAsyncResultBase
系统网状物Mvc。MvcHandler。EndProcessRequest(IAsyncResult asyncResult(+31系统。网状物Mvc。MvcHandler。系统网状物IHttpAsyncHandler。EndProcessRequest(IAsyncResult结果(+9
系统网状物CallHandlerExecutionStep。系统网状物HttpApplication。I执行步骤。执行((+9651796系统。网状物HttpApplication。ExecuteStep(IExecutionStep步骤,Boolean和completedSynchronously(+155
问题的实际原因是基于互操作dll。
我已将PowerPoint dll中的"嵌入互操作类型"更改为False反射特性
最后它像一个迷人的
我猜两个或多个项目使用了相同的dll和嵌入选项,导致上的冲突
windows上的注册表引用和第二个尝试注册新密钥,然后获得
类故障矿井
我希望它能帮助