Just nu i M3-nätverket
Gå till innehåll

error '8000ffff' för .NET dll i Classic ASP


FiEnD

Rekommendera Poster

Hej!

 

Har försökt nu ett tag att skapa mig en DLL i .NET för att använda den i Classic ASP för att kunna nyttja mina .NET-funktioner även på ASP-sidorna på en hemsida.

Detta felar dock med felmeddelandet:

 

 

error '8000ffff'

/test2.asp, line 5 

 

Har suttit och googlat på detta flera kvällar nu och testat olika saker i registret, använt keys, kollat rättigheter, etc men inget har fungerat.

 

Såhär ser koden ut:

 

<%
Dim strTest
Dim obj

Set obj = CreateObject("mydll.mystuff")
strTest = obj.MyLibFunction()

response.Write strTest

%>

 

Det verkar som att DLLen hittas och har registrerats för att byter jag namn och andra saker på mitt object så får jag helt andra fel, eller om jag avregistrerar DLLen.

Använder Visual Studio för att skapa min DLL.

 

Någon som har några teorier? m.m. Någon enkel guide man kan följa för hur man skapar en com.component i Visual Studio / .NET till Classic ASP?

Jag känner mig lite ställd.

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Har du registrerat den för COM med regasm?

Har du gett den ett "strong name"/skapat en nyckelfil och registrerat den i GAC:en?

Länk till kommentar
Dela på andra webbplatser

Har du registrerat den för COM med regasm?

Har du gett den ett "strong name"/skapat en nyckelfil och registrerat den i GAC:en?

 

Jag har i Visual studio bockat i "Sign the assembly" och valt ett "strong name key file" där jag satt lösenord. I mitt projekt så finns det en .pfx-fil också.

 

Under "Build events" har jag angivit följande i "Post-build event command line:"

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm $(TargetFileName) /tlb:$(TargetName).lib /codebase

Har även testat att använda andra frameworks än v2.0.50727 samt lite andra parametrar.

 

Som jag förstår det så regasm reggar den i GACen?

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
Som jag förstår det så regasm reggar den i GACen?

 

Nä, använd följande

gacutil /i dinDLL.dll

Länk till kommentar
Dela på andra webbplatser

Nä, använd följande

gacutil /i dinDLL.dll

 

Ska jag ange någon sökväg eller placera DLL:en på något speciellt ställe för att det ska fungera?

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Ja, du ange hela sökvägen. Kör kommandot från Visual Studios egna kommandoprompt

Länk till kommentar
Dela på andra webbplatser

Ja, du ange hela sökvägen. Kör kommandot från Visual Studios egna kommandoprompt

 

Och det jag gör är att jag byter ut det jag hade mot den där istället?

Länk till kommentar
Dela på andra webbplatser

Och det jag gör är att jag byter ut det jag hade mot den där istället?

 

Nu funkar det, äntligen!

Stort tack! :)

 

Detta blev lösningen:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil.exe" /i "$(TargetPath)"

Länk till kommentar
Dela på andra webbplatser

  • 2 months later...

Ska det vara såhär svårt att få en DLL att fungera?

 

Gjorde lite uppdateringar i DLLen, men dem verkade aldrig uppdateras för mitt objekt returnerade alltid samma text-sträng. Har sedan testat att uppdatera DLLen, kört Gacutil, regasm och allt sånt och nu får jag istället felmeddelanden..

 

error '80004003'

 

Någon teori om vad som blivit fel?

 

Dessa är några av de delar som jag kört:

 

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm $(TargetFileName) /unregister

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm $(TargetFileName) /tlb:$(TargetName).lib /codebase

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil.exe" /if $(TargetPath)

 

Har även testat med /i bara på gacutil

Länk till kommentar
Dela på andra webbplatser

Ökar du versionsnumreen i Assembly- och Fileversion i projektets properties

 

Nej, det har jag inte gjort. Hur gör jag det i Visual Studio och kan jag ha så att VS lägger på en extra version för varje gång jag bygger, eller måste jag göra det manuellt?

Länk till kommentar
Dela på andra webbplatser

Högerklicka på projektet i solution explorer och välj Properties. I översta fliken, Application, har du en knapp - "Assembly Information...", där uppdaterar du manuellt Assembly Version. Poängen med detta är att GAC:en håller reda på olika versioner av assemblyn så du kan välja vilken version du vill använda (dock inte säker på hur man kan göra detta via klassisk ASP, kanske den alltid väljer högst version)

 

Gällande auto-increment - http://autobuildversion.codeplex.com/

Länk till kommentar
Dela på andra webbplatser

Högerklicka på projektet i solution explorer och välj Properties. I översta fliken, Application, har du en knapp - "Assembly Information...", där uppdaterar du manuellt Assembly Version. Poängen med detta är att GAC:en håller reda på olika versioner av assemblyn så du kan välja vilken version du vill använda (dock inte säker på hur man kan göra detta via klassisk ASP, kanske den alltid väljer högst version)

 

Gällande auto-increment - http://autobuildversion.codeplex.com/

 

Perfekt, har lyckats installera den där, men nu kommer felmeddelanden tillbaka

error '8000ffff'

 

Vid build så kör jag nu:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil.exe" /i $(TargetPath)

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm $(TargetFileName) /unregister

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm $(TargetFileName) /tlb:$(TargetName).lib /codebase

 

Har ingen aning om vilken/vilka jag ska köra?

Känns väldigt omständigt att förstå hur dessa olika delar (gacutil och regasm) funkar.

Länk till kommentar
Dela på andra webbplatser

Om jag gör gacutil och lägger till den i cache så kan jag inte göra kommandot med regasm i Visual Studio, då får jag ett felmeddelande om att dllen är upptagen av en annan process, så då startar jag om IISen för att frigöra det.

 

Då får jag felmeddelandet:

 

Körningsfel i Microsoft VBScript error '800a01ad'

ActiveX-komponenten kan inte skapa objekt.: 'min.egnadll'

 

Kör jag sedan regasm via Visual Studio så får jag felmeddelandet:

error '8000ffff'

 

Startar jag då om webservern igen så får jag felmeddelandet

error '80004003'

 

Hur ska jag gå tillväga för att få denna DLL att fungera?

Den fungerade fint innan jag började experimentera med olika versioner.

 

Skulle verkligen uppskatta om jag kunde få hjälp med en lösning till detta :/

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...