Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET WebApi无法在Azure中使用COM(Excel)_C#_Excel_Azure_Asp.net Web Api_Com - Fatal编程技术网

C# ASP.NET WebApi无法在Azure中使用COM(Excel)

C# ASP.NET WebApi无法在Azure中使用COM(Excel),c#,excel,azure,asp.net-web-api,com,C#,Excel,Azure,Asp.net Web Api,Com,COM对象有问题吗 我有一个web api控制器,可以创建和保存Excel文件 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Workbooks.Add(); Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.

COM对象有问题吗

我有一个web api控制器,可以创建和保存Excel文件

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

            excel.Workbooks.Add();

            Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet;

            try
            {

                workSheet.Cells[1, "A"] = "Id";
               -//- 
                int row = 2; 
                foreach (var _c in db.Clients)
                {
                    workSheet.Cells[row, "A"] = _c.ClientId;
                    -//-                     

                    row++;
                }

                        workSheet.Range["A1"].AutoFormat(Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic1);

                fileName = string.Format(@"{0}/ExcelData.xlsx", System.Web.HttpContext.Current.Server.MapPath("~/Reports"));

               workSheet.SaveAs(fileName); 
创建后,控制器返回此文件的url。 在我的本地主机上,它运行良好,但在作为主机部署到Azure云后,我有一个例外:

例外消息:

"Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."
ExceptionType:
"System.Runtime.InteropServices.COMException"
Message:
"An error has occurred."
StackTrace:
"   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
等等

我已经试着在x64和x86之间切换了,但没用


如果有人知道如何解决这个问题,告诉我,我的问题和你的一样。我找到了微软的官方声明:

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

您将看到以下详细信息:

我在博客中找到了这个解决方案


我和你有同样的问题。我找到了微软的官方声明:

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

您将看到以下详细信息:

我在博客中找到了这个解决方案


Excel不会安装在您的Azure服务中,因此不要尝试使用互操作。使用起来容易得多。您是否部署为Web应用程序?虚拟机?云服务(web/工作者角色)?Excel不会安装在Azure服务中,因此不要尝试使用互操作。使用起来容易得多。您是否部署为Web应用程序?虚拟机?云服务(web/工作者角色)?