2017-04-07 5 views
1

erstellen Ich habe eine Verpflichtung, wo ich im klassischen ASPActiveX-Komponente kann Objekt nicht COM-Interop

so habe ich ein sehr einfaches Klasse-Projekt in C# Projekt eine Base64-Codierung auf einem Bild verwenden und versuchen, es zu machen COM sichtbar, Ich habe alle Anleitungen und verschiedene andere Fragen zu Stackoverflow gelesen, aber ich kann immer noch nicht VBScript zum Erstellen des Objekts

Die Baugruppe ist als ComVisible gekennzeichnet und die Ausgabe ist markiert, um für COM-Interop, meine Quelle zu registrieren für die Klasse:

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; 
       } 
      } 
     } 
    } 
} 

Nach Build, ich es als ComInterop registrieren und sowieso in GAC setzt in, mit

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

alles erfolgreich Register

, wenn ich von einem Test klassischen Asp-Seite

set obj = CreateObject("Crypto.Base64") 

ich

bekommen nennen
Microsoft VBScript runtime error '800a01ad' 

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

Ich habe mit ComInterop vor ca. 7-8 Jahren in .Net 2.0, ev gearbeitet erything funktionierte reibungslos, ich kann

Auf meiner Dev-Maschine in diesem Fall nicht verstehen, was falsch ist, ist es Windows 10 pro 64-Bit-Ziel Compilation 4.6.2 Rahmen

+1

Dies sollte helfen - [Fehler ASP 0177: 8007007e Server.CreateObject für COM DLL fehlschlägt] (// stackoverflow.com/a/35985827) * (speziell - "Wie COM DLL mit Windows registrieren" Abschnitt) *. – Lankymart

+0

Mögliches Duplikat von [Fehler ASP 0177: 8007007e Server.CreateObject schlägt für COM DLL fehl] (http://stackoverflow.com/questions/35976543/error-asp-0177-8007007e-server-createobject-fails-for-com-dll) – Lankymart

Antwort

0

Dank @Lankymart ist für den Hinweis mich in die richtige Richtung

Auch wenn die COM aussetzbar .NET-Assembly für beiden 32-Bit/64-Bit- 32-Bit-Anwendungen müssen noch in den App-Pool erweiterten Einstellungen aktiviert werden kompiliert wurde, um es

an der Arbeit

enter image description here