我試圖創建一個使用互操作庫的Excel文件,但下面是我得到的錯誤:使用互操作庫Web服務器端的Excel創建
Creating an instance of the COM component with CLSID {00024500-0000-0000-
C000-000000000046} from the IClassFactory failed due to the following error: 8001010a
The message filter indicated that the application is busy.
(Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)).
我看着很多資源,在那裏上了網,其廣泛地可分爲以下:
- 互操作庫是專門爲桌面應用程序構建,以及在服務器端網絡應用程序使用它們如WCF是highly not recommended。
- 與交互式用戶或DefaultAppPool相關的權限問題。
等等等等。
那麼,這裏的警告,我不能改變服務器端的應用程序,一切工作在其他地方。幾天前,Office 2016從我的機器上被推到我的機器上,並且在我的本地機器上停止工作(出現以上錯誤)。現在我不能去改變一個遺留代碼,但看看我是否可以解決我的本地問題以進一步開發。
下面是我做什麼,請注意一切工作本機(當Office 2013在那裏)上:
- 拿到辦公室2016卸載,然後重新安裝Office 2013,同樣的問題,因此又恢復到辦公室2016.目前MS-Office 2016 32位已安裝。
Microsoft Excel Application
安全選項卡的各個部分驗證的權限已添加IIS AppPool \ DefaultAppPool用戶,IIS_IUSRS,具有完全控制權限的交互式用戶(不應該錯誤爲「訪問被拒絕」,權限已被錯誤?)- 創建一個新的示例web應用程序,以快速調試,運行它的所有組合的CPU平臺,即x86,AnyCpu,x64 - 同樣的問題。
- 有趣的是,它工作如果我的示例應用程序指向IIS Express而不是本地IIS。
- 增加了最新的版本互操作程序集用(安裝,包裝的Microsoft.Office.Interop.Excel -Version 15.0.4795.1000) - 還是同樣的問題
- 新增的Microsoft Office 16.0對象庫(2.8)到項目 - 仍然相同問題
這是一個古老的問題及其可能更好地逃脫互操作,但我想知道什麼可能會錯誤的 - 所有的上述建議實施IMessageFilter
或什麼不是錯誤的直接結果,但我不能更改服務器端代碼,下面的代碼應該像前幾天一樣工作:
Microsoft.Office.Interop.Excel.Application l_ExcelApp =
new Microsoft.Office.Interop.Excel.Application();
但它沒有,所以改變了?可能出了什麼問題?
此外,如果它有幫助--dcomcnfg(/ 32)中列出的ApplicationID是:00020812-0000-0000-C000-000000000046}
,但錯誤有一個不同。
去哪裏看?我希望這個問題的答案可以引導失去的靈魂永遠關於這個問題。
實際上,您確實很幸運,以前所有工作都沒有任何問題......作爲Microsoft支持頁面的鏈接,您已經聲明:Microsoft Interop在服務器端環境中不受Microsoft支持,因爲它可以導致許多不同類型的問題。所以你真正能做的唯一事情就是:擺脫Office Interop部分,並替換它(例如用'OpenXML'或類似的庫)。我不認爲試圖找出任何原因是值得的,因爲整個構造非常「脆弱」(並且可能會隨着即將到來的Office更新再次破裂)。 – bassfader