C# 实例化新的Microsoft.Office.Interop.Word.Application对象时出错(0x80004002)
我正在开发一个简单的C#asp.net Web API,它将用于生成Word文档。我在这个API中使用了Microsoft.Office.Interop.Word Nuget包(v 15.0.4797.1003)。我有一个非常基本的方法,如下所示,它只是试图打开一个现有的word文档。在代码尝试创建新应用程序之前,一切都正常工作。当命中该行时,将抛出异常。消息说: 无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“Microsoft.Office.Interop.Word.Application”。此操作失败,因为对IID为“{00020970-0000-0000-C000-0000000000 46}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE)) 我在网上做了一些搜索,大多数线程都建议在Main方法的开头添加[STAThread]。唯一的问题是,我正在开发一个Web API,没有Main方法。我尝试将其添加到GenerateDocument方法的前面,但没有解决问题。我应该把[StatThread]这一行放在其他地方,还是有其他方法来解决这个问题 添加更多详细信息: 我正在安装Office 2016 Professional Plus的Windows 10计算机上工作C# 实例化新的Microsoft.Office.Interop.Word.Application对象时出错(0x80004002),c#,asp.net-web-api,office-interop,C#,Asp.net Web Api,Office Interop,我正在开发一个简单的C#asp.net Web API,它将用于生成Word文档。我在这个API中使用了Microsoft.Office.Interop.Word Nuget包(v 15.0.4797.1003)。我有一个非常基本的方法,如下所示,它只是试图打开一个现有的word文档。在代码尝试创建新应用程序之前,一切都正常工作。当命中该行时,将抛出异常。消息说: 无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“Microsoft.Office.Interop
public class Helpers
{
[STAThread]
public void GenerateDocument(string filePath)
{
try
{
//Parameter check
if (string.IsNullOrWhiteSpace(filePath))
return;
//Creates a new application
Application app = new Application();
//Opens the temp document in a new document object
Document doc = app.Documents.Open(filePath);
//Closes the document
doc.Close();
}
catch(Exception ex)
{
throw ex;
}
}
}
旁注:越早停止尝试在无头模式/非交互式会话(这是所有服务器端代码的运行方式)下运行Office,您的痛苦就会越小。。。