2017-04-07 9 views
1

を作成することはできませんCOM可視、私はすべてのガイドとstackoverflowの様々な他の質問を読んだが、私はまだオブジェクトを作成するためにvbscriptを得ることができないActiveXコンポーネントは、私は従来のASPでの画像の上に</p> <p>をbase64エンコーディングを使用する必要があります要件はので、私はC#プロジェクトでは非常に単純なクラスのプロジェクトを作成し、それをしようとして持つオブジェクトのCOM相互運用機能

アセンブリは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; 
       } 
      } 
     } 
    } 
} 

私は

を得る

set obj = CreateObject("Crypto.Base64") 

テスト、従来のASPページから呼び出すとき、すべてが正常に

を登録し、ビルドした後、私はcominteropとして登録し、とにかくGACに入れ、

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

を使用して

Microsoft VBScript runtime error '800a01ad' 

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

私はComInteropと約7-8年前に.Net 2.0で共同編集しましたerythingは、それが窓10は、ターゲットのコンパイルがで私を指しているため@Lankymartに4.6.2フレームワーク

+1

これは役立つはずです - [エラーASP 0177:8007007e Server.CreateObjectがCOM DLLで失敗する](// stackoverflow.com/a/35985827)*(具体的には - 「WindowsでCOM DLLを登録する方法」)*。 – Lankymart

+0

[エラーASP 0177:8007007eの重複した可能性があります。COM DLLのServer.CreateObjectが失敗します](http://stackoverflow.com/questions/35976543/error-asp-0177-8007007e-server-createobject-fails-for-com-dll ) – Lankymart

答えて

0

おかげで、64ビットであるプロだ、私はこの場合、私のdevのマシンで

でいただきました間違って理解できない、スムーズに働いていました右方向の両方の32ビット/ 64ビット 32ビットアプリケーションは、まだそれが

を動作させるためにアプリケーションプールの高度な設定で有効にする必要があるためCOM露光可能な.NETアセンブリがコンパイルされたにもかかわらず

enter image description here

関連する問題

 関連する問題