Arbeiten mit Webressourcen in ASP.NET 2.0

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

ASP.NET Support Voice-Kolumne

Arbeiten mit Webressourcen in ASP.NET 2.0

Diese Spalte an Ihre Bedürfnisse anpassen möchten Laden Sie Ihre Ideen zu Themen, die Sie interessieren und sollen Probleme in Zukunft Knowledge Base-Artikeln und Support Voice Spalten angesprochen. Sie können Ihre Ideen und ihr Feedback Bitten dafür Formular senden. Außerdem wird ein Link zu diesem Formular am Ende dieser Kolumne.

Einführung

Hallo! Mein Name ist Praveen Yerneni und ich bin Technical Lead bei Microsoft mit der ASP.NET arbeiten. Im Artikel dieses Monats werde ich erläutern Sie Webressourcen und wie Sie sie in Ihre Anwendung implementieren.

Wenn Sie ein Entwickler sind, COM-Steuerelementen ausgiebig zusammenarbeitet, finden Sie in diesem Artikel nützliche sich einige der wichtigsten Punkte, die Sie beim Entwickeln von Steuerelementen stellen. Wenn Sie statische Dateien wie HTML-Dateien, CSS-Dateien, Bilddateien und Skriptdateien mithilfe eines COM-Steuerelements bereitstellen bisher in Microsoft ASP.NET 1.1 Sie ein Installationsprogramm erstellen und diese Dateien mit dem COM-Steuerelement bündeln. Obwohl dies funktioniert, werden viele Probleme beim Bereitstellen des Steuerelements angezeigt. Beispielsweise haben Sie möglicherweise Probleme mit Versionskonflikte, sicherstellen, dass Dateien wie Bilder dort bereitgestellt wurden oder beschädigte oder gelöschte statische Dateien, die das Steuerelement fehlschlagen könnte.

Webressourcen in Microsoft ASP.NET 2.0 löst diese Probleme den Entwickler diese Ressourcen in Resources Assembly einbetten lassen. Um diese statischen Ressourcen zuzugreifen, können Sie nur eine Methode im Code des Steuerelements aufrufen.

Funktionsweise von Webressourcen

Webressourcen basieren auf einem speziellen Handler WebResource.axd Namens, Assemblyressourcen abgerufen und an den Webbrowser dienen soll. Der Handler für WebResource.axd ist AssemblyResourceLoader.

Geht eine Anforderung vom Client WebResource.axd, sucht der Handler Webressource Bezeichner in der Abfragezeichenfolge -Methode des Anforderungsobjekts . Basierend auf dem Wert des Web Resource Identifier, versucht der Handler zum Laden der Assembly, die diese Ressource enthält. Wenn dieser Vorgang erfolgreich ist, der Handler dann Assemblyattribut suchen und den Ressourcenstream aus der Assembly geladen. Der Handler wird schließlich greifen die Daten aus den Ressourcenstream und Senden an den Client mit den Inhaltstyp, den in das Assembly-Attribut angegeben.

Die URL für WebResource.axd sieht folgendermaßen aus:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Das Format dieses URLs ist WebResource.axd?d=verschlüsselten Bezeichner& t =Zeitstempel mit dem Wert. "d" steht für die angeforderte Webressource. "t" ist der Zeitstempel für die angeforderte Assembly helfen festzustellen, ob die Ressource geändert wurden.

Eintauchen in den code

In meinem Beispiel habe ich ein COM-Steuerelement entwickelt, die von einer ASP.NET Web-Anwendung veranschaulicht dieses neue Feature verwendet wird.

COM-Steuerelement für die Webressource

Erstellen und Einbetten einer Webressource, habe ich ein COM-Steuerelement (SimpleControl) entwickelt. Es hat die folgenden eingebetteten Ressourcen:
  • Zwei Bilddateien mit den Namen smallFail.gif und smallSuccess.gif. Diese Bilddateien für Rollover-Effekte im Steuerelement verwendet und dem Steuerelementcode verbraucht.
  • Eine HTML-Datei Help.htm. Diese Datei enthält nicht viel Text und ist nur für Demo.
  • Eine JavaScript-Datei mit dem Namen MyScript.js. Diese Datei enthält JavaScript-Code der Ersetzen-Funktion zum Abrufen eines Verweises auf eine andere eingebettete Ressource innerhalb der gleichen Assembly veranschaulicht.
  • Eine CSS-Datei mit dem Namen MyStyleSheet.css. Dieses Stylesheet wird dann direkt von der ASP.NET Web-Anwendung verwendet.
In diesem Artikel werde ich Teile erläutern, die für Web-Ressourcen.
Einbetten von Webressourcen
Zuerst müssen Sie sicherstellen, dass alle statischen Dateien, die Web-Steuerelementbibliothek-Projekt in Microsoft Visual Studio 2005 hinzugefügt werden, eingebettete Ressourcen sind. Um diese Ressourcen einzubetten, Sie müssen, lediglich Visual Studio diese Dateien hinzu, und ändern Sie die Eigenschaften dieser Dateien, damit die Buildaktion auf Eingebettete Ressourcefestgelegt ist.

Nachdem Sie dies getan haben, müssen Sie sicherstellen, dass Assemblyattribut WebResource in der Datei AssemblyInfo.cs wie folgt diesen verwiesen wurde.
[assembly: WebResource("SimpleControl.Help.htm", "text/html")][assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]


Das Assemblyattribut WebResource hat drei Parameter:
  • Webressource: der Name der Ressource in die Assembly eingebettet
  • ContentType: die MIME-Dateityp für die Ressource
  • PerformSubstitution: ein boolescher Wert, der bestimmt, ob die in dieser Ressource verwiesen werden URLs von anderen Webressourcen analysiert und durch den vollständigen Pfad der Ressource ersetzt
Abrufen der Webressourcen
Zum Abrufen der Webressource, habe ich GetWebResourceUrl -Methode verwendet eine Methode der ClientScriptManager -Klasse ist, die üblicherweise für die Verwaltung von clientseitigen Skripts verwendet wird. Diese Methode gibt einen URL-Verweis auf die serverseitige Ressource, die in einer Assembly eingebettet ist. Die GetWebResourceUrl -Methode akzeptiert die folgenden zwei Parameter:
  • Typ: der Typ der serverseitigen Ressource
  • Resource Name: der Name der serverseitigen Ressource
Zum Verwenden dieser Methode müssen Sie zunächst eine Instanz der ClientScriptManager -Klasse erstellen und den Typ der Klasse wie folgt.
ClientScriptManager cs = Page.ClientScript;            Type rsType = this.GetType();


Wenn Sie eine Instanz dieser Klasse haben, können dann zu rufen Sie diese Methode und die entsprechenden Parameter wie unten, wo ich eine HyperLink -Schaltfläche erstellen, die NavigateURL Methode auf eingebettete HTML-Ressource.
HyperLink hlHelpFile = new HyperLink();            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");

this.Controls.Add(hlHelpFile);

Image imgTest = new Image();
imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
imgTest.ID = "image1";
hlHelpFile.Controls.Add(imgTest);


Auch in den gleichen Code oben, habe ich eine Bildschaltfläche und Attribut ImageUrl erhält seinen Wert aus einer anderen eingebetteten GIF Bild.
Funktion ersetzen
Ein weiteres nützliches Feature von Ressourcen ist die PerformSubstitution -Eigenschaft des WebResource -Attribut, wie im Abschnitt "Web-Ressourcen einbetten". Dieses Feature können Sie tatsächlich Webressourcen innerhalb einer anderen eingebettete Ressource. Wenn diese Eigenschaft aktiviert ist, WebResource -Handler eingebettete Ressource analysiert und die Syntax für das Assemblyattribut WebResource vor der Seite durch aktuelle Ressourcen ersetzen.

Im obigen Code sehen Sie, dass das HyperLink -Steuerelement ist ein clientseitiges Ereignis mit dem Namen ChangeImage. Diese Funktion ChangeImage befindet sich in einer Skriptdatei. Folgendes ist der Code für dieses Skript.
function ChangeImage(imgControl,varcolor){   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

Diese Skriptdatei mit dem Namen MyScript.js ist auch eine eingebettete Ressource in derselben COM-Steuerelement. Und beachten Sie, dass ich mit WebResource -Methode auf eine andere eingebettete Ressource in der Skriptdatei.

Außerdem verwenden um sicherzustellen, dass diese JavaScript-Datei auf der Seite registriert ist, ich die RegisterClientScriptInclude -Methode der ClientScriptManager -Klasse wie folgt.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Verwenden des Steuerelements in ASP.NET

Nachdem Sie das COM-Steuerelement erfolgreich erstellt haben, müssen Sie dieses Steuerelement in einem Clientprojekt ASP.NET verwenden. Dazu müssen Sie nur das Steuerelement der Toolbox in ASP.NET hinzufügen. Dann können Sie das Steuerelement im Designer an alle hinzufügen.

Wenn Sie das Steuerelement der Toolbox hinzufügen, das Steuerelement registriert und betrachten die HTML-Syntax wird im folgende Code hinzugefügt.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
Im COM-Steuerelement habe ich auch eine Formatvorlagendatei eingebettet die ich in meiner Anwendung ASP.NET verwenden. Zugriff auf dieses Stylesheet haben Sie verlinken HtmlControl in der HTML-Seite und die Eigenschaft Runat auf Server wie unten dargestellt.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Danach können Sie programmgesteuert das Href -Attribut des Steuerelements darauf WebResource Assemblyattribut im Page_Load -Ereignis wie folgt festlegen.
protected void Page_Load(object sender, EventArgs e)    {
//Get the name of the Web Resource.
String rsname = "SimpleControl.MyStyleSheet.css";

//Get the type of the class.
Type rstype = typeof(SimpleControl.MSButton);

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
}


Wenn Sie den Code ausführen, sehen Sie ein Steuerelement, das wie folgt aussieht:
 small fail
Und auf die Maus über das Steuerelement wird folgendermaßen aussehen:
 small success
Wenn Sie auf diesen Link klicken, dauert Sie auf der Hilfeseite es in der COM-Steuerelements Assembly eingebettet.

Abschluss

Webressourcen ist eine nützliche neue Funktion in ASP.NET 2.0. Sie können diese Funktion nutzen mit Bedacht verwenden. Viele Verfahren zur Zwischenspeicherung wurden verwendet, um sicherzustellen, dass sich Web-Ressourcen nicht auf die Leistung der Anwendung auswirken.

In ASP.NET 2.0 wird WebResource.axd intern von Microsoft.NET Framework zum eingebettete Ressourcen abgerufen werden. Beispielsweise verwendet das.NET Framework WebResource.axd Skriptdatei WebUIValidation.js Validierungssteuerelemente abzurufen und die Menu.js Skriptdatei für Menü -Steuerelemente.

Referenzen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:
Wie immer gerne Ideen zu Themen soll in Zukunft Spalten oder in der Knowledge Base mit der
Bitten Sie für Form.
Eigenschaften

Artikelnummer: 910442 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Microsoft ASP.NET 2.0

Feedback