1
我有一個要求,我必須在傳統的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