【问题标题】:ASP.Net Core 2.0 referencing COM objects works locally but not when deployed引用 COM 对象的 ASP.Net Core 2.0 在本地工作,但在部署时不工作
【发布时间】:2018-03-30 20:26:18
【问题描述】:

我有引用多个 COM 对象的 ASP.Net Core 2.0 MVC 应用程序。我已经通过 Visual Studio 的添加引用过程引用了 COM 对象。参考资料显示在我的解决方案中,例如

互操作.XYZ

VS 自动将 Embed Interop Types 设置为 true,正如它应该做的那样。

解决方案构建并运行,我可以在本地成功使用这些引用中的方法。

当我将它发布到另一台机器上的 IIS 时,虽然我得到了这个错误:

检索具有 CLSID 的组件的 COM 类工厂 {5D9E1092-69D4-11D2-BCBB-0000E82BB3D3} 由于以下原因而失败 错误:80040154 类未注册(HRESULT 异常: 0x80040154 (REGDB_E_CLASSNOTREG))。

我的应用程序池已将启用 32 位应用程序设置为 true。在我的项目属性中,平台目标设置为任何 CPU(我尝试将其强制为 x86,并且该站点在发布后甚至无法在 IIS 上运行)。

我使用 .Net 4.7 克隆了该应用程序,并以相同的方式配置它,使用相同的 COM 引用,并发布到同一服务器上的第二个站点。该应用程序的已发布版本运行良好,因此我认为程序集未注册不是问题(在任何情况下都不应该,因为嵌入互操作类型对于所有 COM 引用都是正确的)。

有人知道怎么回事吗?

【问题讨论】:

  • 您在与 Microsoft Office 进行互操作吗?
  • 不,这是供应商提供的一组 COM 对象。

标签: c# asp.net-mvc iis asp.net-core


【解决方案1】:

不确定这是否相关,但另一个问题有类似的消息和答案。

这里是链接:

Link

【讨论】:

  • 谢谢,但是链接好像坏了。
  • 谢谢,我也是这么想的——我必须在 32 位模式下调试,所以我知道我必须以同样的方式在 IIS 上运行。我以为我通过在我的应用程序池上启用 32 位来解决这个问题。我会查看链接,看看我是否遗漏了什么。
猜你喜欢
  • 2019-12-15
  • 1970-01-01
  • 2021-05-22
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2016-06-20
  • 1970-01-01
相关资源
最近更新 更多