Asp.net 检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败。错误:80070005访问被拒绝

Asp.net 检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败。错误:80070005访问被拒绝,asp.net,outlook,Asp.net,Outlook,在我的网站中,我正在创建Outlook对象,并使用它们在单击按钮时打开Outlook文件。它在本地工作。但是当我在IIS8.5中托管它时,它会给我以下错误 检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80070005访问被拒绝。(HRESULT的例外:0x80070005(E_访问被拒绝))。 我的代码如下: outlook.Application objOutlk = new outlook.Appli

在我的网站中,我正在创建Outlook对象,并使用它们在单击按钮时打开Outlook文件。它在本地工作。但是当我在IIS8.5中托管它时,它会给我以下错误

检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80070005访问被拒绝。(HRESULT的例外:0x80070005(E_访问被拒绝))。

我的代码如下:

outlook.Application objOutlk = new outlook.Application();
string templatePath = Server.MapPath("Files\\" + file + ".msg");
outlook._MailItem mailitem =   
(outlook.MailItem)objOutlk.CreateItemFromTemplate(templatePath);
mailitem.Display(true);

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

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将面临整体解决方案稳定性方面的风险。在文章中阅读更多关于这方面的内容


对于Exchange帐户,请考虑使用EWS,有关详细信息,请参阅。或者可以使用Mail REST API,请参阅。

首先,不能在服务(如IIS)中使用Outlook对象模型。其次,即使可以,您的代码会做什么?它在运行代码的计算机(即IIS服务器)上显示新创建的项,而不是在客户端计算机上

如果要显示预填充为/CC/Subject/Body的新邮件窗口,请在网页上使用mailto:url。如果您想要更复杂的内容(例如带有图像的HTML正文等),您可以动态创建一个EML文件,并让用户单击一个链接下载该文件-如果安装了Outlook,新的消息窗口将打开。确保设置
X-Unsent:1
MIME头