簡體   English   中英

嘗試讀取辦公室 outlook 模板的內容時出現互操作異常

[英]interop exception when trying to read the contents of an office outlook template

我正在嘗試讀取 email 正文中嵌入圖像的辦公模板(.oft 文件)。 我嘗試使用讀取內容的 MsgReader nuget package ,但無法管理正文中的圖像。

我也嘗試過使用 Microsoft.Office.Interop.Outlook,但這會在運行時引發以下錯誤:

錯誤:System.IO.FileNotFoundException:無法加載文件或程序集“office,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”。 該系統找不到指定的文件。 文件名:'office,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'

我正在努力尋找解決方案。 在我的工作計算機上,我安裝了 Office 365。 在 about 選項卡中顯示 Microsoft Outlook for Microsoft 365 MSO (16.0.12827.20200) 32-bit

到目前為止,根據我所閱讀的內容,我已經嘗試在 IIS 而不是 IIS Express 中運行我的原型項目,但這並沒有解決問題。 我是否需要安裝特定版本的 Outlook 或一些再分發文件? 還是有更好的方法來做到這一點?

錯誤:System.IO.FileNotFoundException:無法加載文件或程序集“office,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”。 該系統找不到指定的文件。 文件名:'office,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'

看來您只需要參考office.dll程序集。 例如,在 COM 參考部分中搜索Microsoft Office library

添加 COM 引用對話框窗口

另外,我注意到您正在 IIS 下運行該解決方案。

到目前為止,根據我所閱讀的內容,我已經嘗試在 IIS 而不是 IIS Express 中運行我的原型項目,但這並沒有解決問題。

以下是微軟對此的聲明:

所有當前版本的 Microsoft Office 都經過設計、測試和配置,可作為最終用戶產品在客戶端工作站上運行。 他們假設一個交互式桌面和用戶配置文件。 它們不提供滿足設計為無人值守運行的服務器端組件的需求所必需的可重入性或安全性級別。

Microsoft 目前不推薦也不支持從任何無人值守、非交互式客戶端應用程序或組件(包括 ASP、ASP.NET、DCOM 和 NT 服務)自動化 Microsoft Office 應用程序,因為 Office 可能會表現出不穩定的行為和/或死鎖當 Office 在此環境中運行時。

Office 服務器端自動化的注意事項文章中閱讀有關此內容的更多信息。

下面列出了您的選擇:

  • 使用可在服務下運行的低級 API - 擴展 MAPI 或 EWS,有關詳細信息,請參閱開始在 Exchange 中使用 web 服務
  • 使用為服務器端執行而設計的第三方組件。

請注意, [MS-OXMSG]: Outlook 項目 (.msg) 文件格式在 MSDN 中有描述。

我無法讓他進行互操作,但找到了一個有效的第三方解決方案: https://downloads.aspose.com/email/net

nuget package 將正確讀取包括圖像在內的正文內容,而無需使用互操作。

When using interop types with .NET Core, use a COM reference to the particular Office Object Library instead of the NuGet package :

在此處輸入圖像描述

在此處輸入圖像描述

並將Embed Interop TypesCopy Local設置為Yes

3

有關更多詳細信息,請參閱.NET 核心 3.0 和 MS Office 互操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM