【发布时间】:2017-09-02 05:32:36
【问题描述】:
我有一个要求,我必须在经典 ASP 中对图像使用 base64 编码
所以我在 C# 项目中创建了一个非常简单的类项目并试图使其 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 并使用
无论如何都放入 GACregasm *<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-bit,目标编译是4.6.2 Framework
【问题讨论】:
-
这应该会有所帮助 - Error ASP 0177: 8007007e Server.CreateObject fails for COM DLL (特别是“如何在 Windows 中注册 COM DLL”部分)。
标签: c# vbscript asp-classic com-interop