Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Verfügbarkeit von Objekten prüfen

Geschrieben von: Christian Koller
Kategorie: Komponenten

Will man auf einem (fremden) Webserver ein bestimmtes Objekt in einer ASP-Seite verwenden, so muß die Objekt-Bibliothek, zu der das Objekt gehört, auf dem Internet Server installiert sein.

Ob nun ein Objekt tatsächlich in ASP zur Verfügung steht, prüft man am einfachsten indem man versucht das Objekt zu "instanzieren" - das heißt, eine Kopie des Objektes in einer Variable zu speichern. Wenn das Objekt sich nicht erstellen läßt, so ist es am Webserver nicht installiert, und damit auch in ASP-Seiten nicht verfügbar.

Man kann zum Beispiel prüfen, ob das ADO Stream Objekt (ProgID "ADODB.Stream") in ASP-Seiten am Server verwendet werden kann, indem man das folgende ASP-Script am Server laufen läßt:

<% @ Language="VBScript" %>
<% Option Explicit %>
<%
' Verschiedene Objekte werden mit IIS 4.0 mitgeliefert.
' Die Komponenten, deren ProgID im nachfolgenden
' Array eingetragen sind, werden automatisch getestet
Dim theInstalledObjects(8)

theInstalledObjects(0) = "MSWC.AdRotator"
theInstalledObjects(1) = "MSWC.BrowserType"
theInstalledObjects(2) = "MSWC.NextLink"
theInstalledObjects(3) = "MSWC.Tools"
theInstalledObjects(4) = "MSWC.Status"
theInstalledObjects(5) = "MSWC.Counters"
theInstalledObjects(6) = "MSWC.ContentRotator"
theInstalledObjects(7) = "MSWC.PageCounter"
theInstalledObjects(8) = "MSWC.PermissionChecker"

Function IsObjInstalled(strClassString)
 On Error Resume Next
 ' Initialisiere Werte
 IsObjInstalled = False
 Err.Number = 0
 ' Teste ob Objekt sich initiieren laesst
 Dim xTestObj
 Set xTestObj = Server.CreateObject(strClassString)
 If 0 = Err.Number Then 
   IsObjInstalled = True
 End If

 Set xTestObj = Nothing
 Err.Number = 0
End Function
%>

<HTML>
<HEAD>
<TITLE>Test auf installierte Objekte</TITLE>
</HEAD>
<BODY>

Geben Sie die ProgID oder ClassId einer Komponente ein um zu testen, ob sie am
Server installiert ist. Wenn Sie das Textfeld leer lassen, so werden 
einige Standard-Komponenten getestet.

<FORM action=<%=Request.ServerVariables("SCRIPT_NAME")%> method=post>
<input type=text value="" name="classname" size=40>
<INPUT type=submit value=Submit>
<INPUT type=reset value=Reset> 
</FORM>

<%
Dim strClass
strClass = Trim(Request.Form("classname"))
If "" <> strClass then
  Response.Write strClass & " ist "
  If Not IsObjInstalled(strClass) then 
    Response.Write "<strong>nicht installiert</strong>"
  Else
    Response.Write "installiert!"
  End If
  Response.Write "<P>" & vbCrLf
Else
  ' Default: Liste von Komponenten die installiert sein koennten.
%>

<TABLE BORDER=0>
<%
Dim i
For i=0 to UBound(theInstalledObjects)
  Response.Write "<TR><TD>" & theInstalledObjects(i) & "</TD><TD>"
  If Not IsObjInstalled(theInstalledObjects(i)) Then 
    Response.Write "<strong>nicht installiert</strong>"
  Else
    Response.Write "installiert!"
  End If
  Response.Write "</TD></TR>" & vbCrLf
Next
%>
</TABLE>

<%
End If
%>

</BODY>
</HTML>

Dieses Script enthält die Funktion IsObjInstalled. Diese versucht mittles der Server.CreateObject Funktion, ein Objekt mit einer bestimmten ProgID (zB: "ADODB.Connection") zu erstellen und in einer Variablen zu speichern. Wenn dies nicht gelingt, so wird vom Programm ein Laufzeit-Fehler initiiert. Normalerweise führt so ein Laufzeitfehler zum Abbruch des Programmes, doch im vorhergehenden Skript verhindert der Befehl On Error Resume Next dies. Stattdessen läuft das Programm weiter, und im ASP Objekt Err stehen automatisch die Informationen darüber, ob und welcher Fehler aufgetreten ist.

Wenn kein Fehler beim Erstellen des Objektes aufgetaucht ist, so enthält die Number-Eigenschaft des Err-Objektes den Wert 0 und das Objekt wurde erfolgreich instanziert. Dadurch weiß das Programm, daß das Objekt in ASP-Seiten zur Verfügung steht und gibt eine entsprechende Meldung aus.

Das hier vorgestellte Skript testet standardmäßig für einige im Normalfall installierte Komponenten:

  • MSWC.AdRotator Die Ad Rotator Komponente kann man zur Einblendung von Werbebannern verwenden.
  • MSWC.BrowserType Das BrowserType Objekt zeigt Funktionalitäten des Browsers auf.
  • MSWC.NextLink Mit NextLink kann man Seiten miteinander verlinken, oder Inhaltsverzeichnisse erstellen.
  • MSWC.Tools Bietet Unterstützung bei der serverseitigen Programmierung.
  • MSWC.Status Liefert Serverstatusinformationen.
  • MSWC.Counters Leistungsfähige Counterkomponente (Individualcounter).
  • MSWC.ContentRotator Funktioniert ähnlich wie Ad Rotator, allerdings werden hier nicht Banner sondern HTML Inhalte rotiert.
  • MSWC.PageCounter Spezifischer Counter für Webseiten.
  • MSWC.PermissionChecker Kontrolliert Zugriffsrechte auf Dateien durch den aktuellen Benutzeraccount.
Diese Liste kann im Array theInstalledObjects um gewünschte Objekte erweitert werden.

Schlußbemerkung

Einen Check kann dieses Skript leider nicht ausführen: ob ein Objekt mit Server.CreateObject erzeugt werden muß, oder ein einfacher Aufruf der VBScript Funktion CreateObject ausreichen würde - CreateObject ist nämlich deutlich schneller.

Was ist der Unterschied zwischen den beiden CreateObject's? Bestimmte Objekte (zB BrowserType) greifen auf die ASP Objekte zu, und diese werden bei Server.CreateObject mitgegeben. Ein Fehler (wegen fehlender ASP Objekte), tritt allerdings erst beim Aufruf einer Funktion/Eigenschaft auf, die diese ASP Objekte benötigen würde.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Debuggen von ASP Skripts - Teil 1

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.