来自 HRESULT 的例外:0x80004004 (E_ABORT)



我正在使用 c# 处理 VSTO Outlook AddIn 项目,并尝试使用以下方法在 Outlook 中添加 DocumentItem -

protected void CreateWordDocument(string strPhysicalFilePath, Outlook.Folder ParentFolder)
{
Outlook.DocumentItem objDocItem = null;
Outlook.Attachment objAtt = null;
try
{

objDocItem = ParentFolder.Items.Add("IPM.Document");
objAtt = objDocItem.Attachments.Add(strPhysicalFilePath, );
objDocItem.Subject = objAtt.FileName;
string strFileType = Path.GetExtension(strPhysicalFilePath, );
switch (strFileType)
{
case ".doc":
case ".docx":
objDocItem.MessageClass = "IPM.Document.Word.Document.8"; break;
case ".xls":
case ".xlsx":
objDocItem.MessageClass = "IPM.Document.Excel.Sheet.8"; break;
case ".pps":
case ".ppt":
case ".pptx":
objDocItem.MessageClass = "IPM.Document.PowerPoint.Show.8"; break;
case ".txt":
objDocItem.MessageClass = "IPM.document.txtfile"; break;
}
objDocItem.Save();
}
catch (Exception ex)
{
ErrorLog.WriteError("ClassName", "CreateWordDocument()", ex.Message);               
}
finally
{
if (objDocItem != null) Marshal.ReleaseComObject(objDocItem);
if (objAtt != null) Marshal.ReleaseComObject(objAtt);               
}
}

但是在行上出现以下错误 " objDocItem = ParentFolder.Items.Add("IPM.文件"(;">

操作中止(HRESULT 中的异常:0x80004004 (E_ABORT(( 展望。VSTO Outlook Addin 中的 Items.Add((。

相同的代码在我的计算机上工作正常,但在另一台计算机上会出现此错误。

Microsoft当前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务(自动化Microsoft Office 应用程序,因为在此环境中运行 Office 时 Office 可能会表现出不稳定的行为和/或死锁。

如果要生成在服务器端上下文中运行的解决方案,则应尝试使用已安全执行无人参与的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方法。如果使用服务器端解决方案中的 Office 应用程序,则该应用程序将缺少成功运行所需的许多功能。此外,您将承担整体解决方案稳定性的风险。有关详细信息,请参阅 Office 服务器端自动化的注意事项一文。

我已经找到了解决方案 - 目标平台 32 位或 64 位存在问题。我在那里遇到异常的机器安装了 64 位 Office,我的 Outlook 添加安装程序是在 32 位平台上构建的。我已经重新编译并构建了具有 64 位目标平台的 Outlook 添加设置并安装在该计算机上。现在它工作正常。

最新更新