[.NET COM->ASP] Class doesn't support Automation:

Pagina: 1
Acties:
  • 183 views sinds 30-01-2008
  • Reageer

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 18:23
Ok ik heb een COM component geschreven in C# .NET welke ik binnen een ASP pagina gebruik.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%
Dim objOceDocM
Dim rcsPersons

' create object instance upon the root
Set objOceDocM = Server.CreateObject("Oce.DocManager.DAL.Persons")
' grab all peron records outta persons table
Set rcsPersons = objOceDocM.SelectAll()
' dots and loops
While Not rcsPersons.EOF
  Response.Write Cstr(rcsPersons.Fields("firstname").Value)
  Response.Write "<br>"
  rcsPersons.MoveNext
Wend
' cleanup
Set rcsPersons = Nothing
Set objOceDocM = Nothing

%>


Dit werkt perfect, dus lijkt m'n component te werken, maar als ik probeer properties te gebruiken (setters)

objOceDocM.id=4

Dan krijg ik de volgende foutmelding:

Dan krijg ik deze foutmelding (op zich logisch):
Error Type:
Microsoft VBScript runtime (0x800A01AE)
Class doesn't support Automation: 'id'
/ocedocm/test.asp, line 8


Probleem is dat MS alleen maar over oude VB6 com in .NET gebruiken, maar nergens .NET componenten in ASP. Heeft iemand een idee wat nu exact het probleem is en hoe ik dit op kan lossen?

Lifetime management? Bvd!

Verwijderd

Dit kan volgens mij helemaal niet, want daarvoor hebben ze dus ASP.NET uitgevonden. ASP.NEt is idd wel backward compatible met oude VB COM-objecten, andersom dus niet. :)

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 18:23
Verwijderd schreef op 14 september 2002 @ 00:23:
Dit kan volgens mij helemaal niet, want daarvoor hebben ze dus ASP.NET uitgevonden. ASP.NEt is idd wel backward compatible met oude VB COM-objecten, andersom dus niet. :)
COM is standaard... het maakt geen kloot uit in welke "taal" of techniek je een component maakt. COM -> tlb en gaan met die handel. Het enige probleem wat ik bv wel heb is dat ASP geen datasets kent, dus ga dat via interop.adodb doen.

Verwijderd

Je heb wel de benodige com+ attributen op je methods gezet?

Al kan ik ook niet zo snel vinden wat deze zouden moeten zijn, maar het zou moeten neerkomen op [deze method kan gebruikt worden door niet .net applicaties].


Ik kan er ook heel erg naast zitten

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 18:23
Verwijderd schreef op 14 september 2002 @ 11:12:
Je heb wel de benodige com+ attributen op je methods gezet?

Al kan ik ook niet zo snel vinden wat deze zouden moeten zijn, maar het zou moeten neerkomen op [deze method kan gebruikt worden door niet .net applicaties].


Ik kan er ook heel erg naast zitten
De code in de DAL DLL
code:
1
2
3
4
5
6
7
8
9
10
11
12
        [ComVisible(true)]
        public SqlString Firstname
        {
            get
            {
                return _firstname;
            }
            set
            {
                _firstname = value;
            }
        }


ASP code om een propertie te benaderen.
code:
1
2
3
4
5
6
7
8
<%
Dim objOceDocM
Dim rcsPersons

' create object instance upon the root
Set objOceDocM = Server.CreateObject("Oce.DocManager.DAL.Persons")
objOceDocM.firstname = "test"
%>


resultaat:
Error Type:
Microsoft VBScript runtime (0x800A01AE)
Class doesn't support Automation: 'firstname'
/ocedocm/test.asp, line 6

Verwijderd

Je moet iig de volgende stappen uitvoeren om een .NET component aan de praat te krijgen. Misschien dat je er een bent vergeten :) :
- Component registreren met RegAsm.exe in het windows register
- De assembly moet volgens mij in de GAC dus:
- Je moet een Strong name erop gooien
- Vervolgens met Gacutil.exe registreren.
Just my € 0.02

Verwijderd

paulgielens schreef op 14 september 2002 @ 11:47:
[...]


De code in de DAL DLL
code:
1
2
3
4
[ComVisible(true)]
public SqlString Firstname
{
}
Ik denk dat die SqlString klasse het probleem is. Kun je managed klassen zomaar via COM beschikbaar stellen? Misschien kun je eens proberen er een string van te maken.

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 18:23
vage problemen...een herinstallatie van IIS heeft ineens het probleem opgelost.

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Nu ben ik ook bezig om .NET Components aan te roepen in ASP ik krijg de volgende foutmelding:
Error Type:
(0x80070002)
The system cannot find the file specified.
/test/a.asp, line 3

De code is :
using System;
using Microsoft.Win32;
namespace ASPTEST
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Test
{

public int intTestNull;
public string stringTestNull = null;
public int intTest = -1;
public string stringTest = "String";


public Test()
{
//
// TODO: Add constructor logic here
//
}
}
}

Ik heb de code gecompiled en met
c:\WINNT\Microsoft.NET\Framework\v1.1.4322>regasm :\Inetpub\wwwroot\test\ASPTEST.dll

geregristreerd. Iemand?


[QUOTE]

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Probeer eens je assembly een strong name te geven.
Pagina: 1