C# 实例化新的Microsoft.Office.Interop.Word.Application对象时出错(0x80004002)

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

我正在开发一个简单的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计算机上工作

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,您的痛苦就会越小。。。