c# - 在 .NET Core 2.0 中使用 COM 对象

标签 c# .net asp.net-core com

因此,客户端有一个 2007 年用 C 语言编写的 COM 对象,用于验证加密的 session cookie。这目前适用于使用以下内容的旧版本 .NET。

var validate = Activator.CreateInstance(Type.GetTypeFromProgID("Company.Validate"));

新的实现将完全使用 C#。我已将验证逻辑提取到 .NETCore 类库中,我们又在我们的 ASP.Net Core 项目中引用它。

  1. 我已经尝试过 32 位和 64 位版本,以及 IIS 设置。

  2. 我反编译了 COM 对象并引用了它,它在本地工作,但在开发服务器上不起作用,我收到以下错误:

    Retrieving the COM class factory for component with CLSID {EDC43BC6-5ECD-4501-AEB3-64A17180A13D} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

  3. COM 已在本地和开发服务器上注册。

  4. Activator.CreateInstance 在这两种环境中均不起作用。

  5. 注册的COM ID和ProgId在本地和开发服务器上是一样的。


问:我错过了什么,或者这行不通吗?有没有人在类似的挑战中取得成功?我忽略了什么吗?

最佳答案

您不能将 COM 与 .NET Core 一起使用。 COM 仅适用于 Windows,而 .NET Core 中的所有内容都必须是跨平台的。但是,您可以在完整框架上运行您的 ASP.NET Core 应用程序,然后您可以使用 COM 库。换句话说,运行完整的框架并不妨碍您继续使用 ASP.NET Core。由于完整的框架/COM 依赖性,您将只能部署到 Windows。从技术上讲,如果您计划部署到 Mac 或 Linux 之类的系统,您需要使用 .NET Core。否则,就坚持你所知道的。

关于c# - 在 .NET Core 2.0 中使用 COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49695476/

相关文章:

c# - 我们什么时候需要在 dot net c# 中调用 Dispose()?

c# - 如何在 Mono IDE 中使用 C# 设置命令行参数。

c# - 从字符串末尾开始的字符串的子字符串

c# - 将 RAW 图像文件读取为 GDI+ 位图

javascript - 如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API

asp.net - 如何在 Entity Framework Core 2.1 中播种枚举

asp.net-core - 在 Azure Front Door 后面设置多个 Web 应用程序的正确方法是什么?

c# - DistinctBy,但忽略null/empty

.net - 新的 HttpClient 代理设置问题

.net - String.Join 与 StringBuilder : which is faster?