【问题标题】:COM CLASS Library . ASP.net MVC DLLCOM 类库。 ASP.net MVC DLL
【发布时间】:2015-11-16 10:21:50
【问题描述】:

有没有办法让 COM 或 Interop 在 IIS Server Deployed ASP.net MVC 上工作?

我创建了一个 MVC 站点,其中引用了自定义 maid Interop COM 到扫描仪机器。

它在 VS 上的调试模式下工作,但是当我尝试在 IIS 上部署它并访问它时。它给了我Retrieving the COM class factory for component with CLSID {3FEDB614-C25B-448C-AED3-2D38A6C95765} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

问题是,它自己的 dll 已经安装在我的机器上,我认为它正在调试模式下工作,因为 VS 的 IIS 运行方式不同,或者因为我有 DLL 的引用需要。

但在 IIS 部署中。发生错误。有什么想法吗?

我的主要目标是在本地网络上运行该站点,并且每个人都可以与安装了扫描仪的站点进行通信。

简单的想法,但对我来说很难实现。而且我什至不确定,如果我正在做的调用是在主机而不是客户端中进行的。

【问题讨论】:

  • 我认为错误信息差不多 - 您需要在运行 IIS 的目标计算机上安装非托管 COM dll(扫描仪软件?)。

标签: c# asp.net asp.net-mvc registry


【解决方案1】:

看起来IIS应用程序Bin文件夹没有Interop dll,复制Interop dll,它被命名为Interop.[YourCom].dllYourCom 只不过是原始 COM。所以如果COM名称是MyCom.dll,那么Interop应该是Interop.MyCom.dll。如果它在 VS 上处于 Debug 模式,那么它应该在 VS 应用程序 Bin 文件夹中可用。

Interop dll 的先决条件:COM 应该在同一个系统中注册。

【讨论】:

  • 感谢您指出这个 Maiti,我会投票,因为它可能会导致其他有问题的人作为答案。
【解决方案2】:

结果是,即使手动注册,对我的情况也无济于事,不要问我不知道为什么。

我通过让 VS Studio 项目设置/构建选项卡/Register COM 复选标记来解决它。但诀窍是在管理员中运行 VS,否则会出错。最后一步是右键单击 bin 文件夹并选择添加到项目。不太确定为什么没有它就不能工作,因为我很确定它不需要在当前项目中,因为 IIS 无论如何都会在 bin 文件夹中重定向。

Interop 名称已被应用,但正如 Maiti 所说,它是必需的。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2011-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2012-09-22
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多