我需要在使用C#上传时阅读word文件和PDF文件的页面。我在网上搜索过并得到了一个方法。它只是在本地工作正常,但它不在服务器上工作。我搜索了问题。我得到了这个例外:
System.Runtime.InteropServices.COMException(0x80080005):由于以下错误,检索CLSID为{000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005服务器执行失败(来自HRESULT的异常: 0x80080005(CO_E_SERVER_EXEC_FAILURE))。 在System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) 在System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) 在System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType,Object [] props,Boolean bNewObj) 在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark& stackMark) 在System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark& stackMark) 在System.Activator.CreateInstance(Type type,Boolean nonPublic) 在System.Activator.CreateInstance(类型类型)
我也找到了它的解决方案,它基本上与服务器上的权限相关。
我设置了所有权限但仍然抛出相同的异常。我找不到任何方法来解决这个问题。
我正在使用以下代码:
var application = new Application();
var document = application.Documents.Open(path);
var numberOfPages = document.ComputeStatistics(WdStatistic.wdStatisticPages, false);
result = numberOfPages;
object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdOriginalDocumentFormat;
object routeDocument = false;
document.Close(ref saveOption, ref originalFormat, ref routeDocument);
application.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(application);
这是我在Dot Net项目中使用Com组件的DLL(Mvc 4.0)
汇编Microsoft.Office.Interop.Word.dll,v12.0.0.0
我在我的本地计算机上安装了MS Office 2007,但服务器有2013年的Ms办公室。它可能是与错误相关的东西。