繁体   English   中英

ActiveX组件无法创建对象COM互操作

[英]ActiveX component can't create object COM interop

我有一个要求,我必须在经典ASP中的图像上使用base64编码

所以我在C#项目中创建了一个非常简单的类项目,并尝试使其COM可见,我已经阅读了有关stackoverflow的所有指南和各种其他问题,但我仍然无法获取vbscript来创建对象

程序集标记为ComVisible,并标记输出以注册COM interop,我的类源:

namespace Crypto
{
    [ComVisible(true)]
    [Guid("ad491fe9-ade0-46a1-bae0-d407a987a9e9"),ClassInterface(ClassInterfaceType.None)]
    public class Base64
    {
        public Base64() {
            //default com exposable constructor
        }

        public string Base64Encode(string filePath) {

            if (!File.Exists(filePath)) return "";

            using (Image image = Image.FromFile(filePath))
            {
                using (MemoryStream m = new MemoryStream())
                {
                    image.Save(m, image.RawFormat);
                    byte[] imageBytes = m.ToArray();

                    // Convert byte[] to Base64 String
                    string base64String = Convert.ToBase64String(imageBytes);
                    return base64String;
                }
            }
        }
    }
}

在构建之后,我将其注册为cominterop并且无论如何都要在GAC中使用

regasm *<file path>* /codebase /tlb
gacutil -i *<file path>*

一切都成功登记

当我从测试经典的asp页面调用时

set obj = CreateObject("Crypto.Base64")

我明白了

Microsoft VBScript runtime error '800a01ad'

ActiveX component can't create object: 'Crypto.Base64'

大约7 - 8年前我在.Net 2.0中与ComInterop合作过,一切顺利,我无法理解这个案例有什么不对

在我的开发机器上,它是windows 10 pro 64位,目标编译是4.6.2 Framework

感谢@Lankymart指出我正确的方向

即使为两个32位/ 64位32位应用程序编译了COM可公开.NET程序集,仍然需要在App Pool高级设置中启用它才能使其工作

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM