我正在使用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.Document“);”
操作中止(来自HRESULT的异常:0x80004004(E_ABORT))in VSTO Outlook Addin中的outlook.Items.Add()。
相同的代码在我的计算机上正常工作,但在另一台计算机上出现此错误。
答案 0 :(得分:0)
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定Office在此环境中运行时的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。
答案 1 :(得分:0)
我找到了解决方案 - 目标平台32位或64位存在问题。在我安装64位Office的情况下我得到例外的机器,我的Outlook添加设置是在32位平台上构建的。我已经重新编译并构建了Outlook 64位目标平台的安装程序并安装在该机器上。现在工作正常。