C# ActiveX组件可以';不创建对象COM互操作
我有一个要求,我必须使用base64编码的图像在经典的ASP 因此,我在C#project中创建了一个非常简单的类项目,并试图使其COM可见,我已经阅读了有关stackoverflow的所有指南和各种其他问题,但我仍然无法让vbscript创建该对象 程序集标记为ComVisible,输出标记为注册COM interop,该类的源代码:C# ActiveX组件可以';不创建对象COM互操作,c#,vbscript,asp-classic,com-interop,C#,Vbscript,Asp Classic,Com Interop,我有一个要求,我必须使用base64编码的图像在经典的ASP 因此,我在C#project中创建了一个非常简单的类项目,并试图使其COM可见,我已经阅读了有关stackoverflow的所有指南和各种其他问题,但我仍然无法让vbscript创建该对象 程序集标记为ComVisible,输出标记为注册COM interop,该类的源代码: namespace Crypto { [ComVisible(true)] [Guid("ad491fe9-ade0-46a1-bae0-d40
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,并使用
regasm *<file path>* /codebase /tlb
gacutil -i *<file path>*
我明白了
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'Crypto.Base64'
大约7-8年前,我在.NET2.0中与ComInterop合作过,一切都很顺利,我不明白这种情况下出了什么问题
在我的开发机器上,它是windows 10 pro 64位,目标编译是4.6.2 Framework感谢@Lankymart为我指明了正确的方向 即使COM可公开的.NET程序集是针对32位/64位 32位应用程序仍然需要在应用程序池高级设置中启用才能正常工作
感谢@Lankymart为我指明了正确的方向 即使COM可公开的.NET程序集是针对32位/64位 32位应用程序仍然需要在应用程序池高级设置中启用才能正常工作 这应该有帮助—(特别是—“如何在Windows中注册COM DLL”部分)。可能重复的应该有帮助—(特别是—“如何在Windows中注册COM DLL”部分)。可能重复的
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'Crypto.Base64'