ActiveX组件不能创建对象COM互操作
问题描述:
我有一个要求,我必须在传统的ASPActiveX组件不能创建对象COM互操作
所以我创建了C#项目一个非常简单的类项目中使用base64编码的图像上,并试图使它COM可见,我已阅读所有指南和各种其他问题在stackoverflow但我仍然无法获得vbscript创建对象
程序集被标记为ComVisible和输出被标记为注册COM互操作,我的来源适用人群:
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'
我已经与ComInterop约7-8年前在.Net 2.0,ev erything工作顺利,我不明白什么是错在这种情况下
在我的dev的机器,它的Windows 10的亲64位,目标编译4.6.2框架
这应该有帮助 - [错误ASP 0177:8007007e Server.CreateObject失败的COM DLL](// stackoverflow.com/a/35985827)*(具体 - “如何注册COM DLL与Windows”部分)*。 – Lankymart
可能出现[错误ASP 0177:8007007e Server.CreateObject失败,COM DLL](http://stackoverflow.com/questions/35976543/error-asp-0177-8007007e-server-createobject-fails-for-com-dll ) – Lankymart