Ich versuche, ein Bild und ein Stylesheet von einem Benutzersteuerelement zu eingebetteten Ressourcen in der Assembly zu verschieben. Ich habe Reflector verwendet, um zu sehen, dass die Bild- und CSS-Datei in die Assembly eingebettet sind, aber wenn ich versuche, mit der von ClientScript.GetWebResourceUrl() erstellten URL darauf zuzugreifen, wird die Ressource nicht gefunden. Ich bin ratlos.Ich kann nicht auf eingebettete Ressource in asp.net zugreifen
Assembly Standard-Namespace:
TestWebApp
die Pfade zu den Dateien (wie Buildaction markiert: Eingebettete Ressource) sind
TestWebApp/Resources/CSS/PaymentHistory.css
TestWebApp/Resources/Images/loading.gif
Und so sind meine Ressourcen wie folgt registriert:
[assembly: WebResource("TestWebApp.Resources.CSS.PaymentHistory.css", "text/css", PerformSubstitution = true)]
[assembly: WebResource("TestWebApp.Resources.Images.loading.gif", "image/gif")]
Benutzerkontrolle (in derselben Baugruppe), die auf die Ressourcen zugreift:
TestWebApp.UserControls.PaymentHistory
Um zu vereinfachen, versuche ich gerade, das Bild und nicht das Stylesheet zu referenzieren. In meiner Page_Load Benutzersteuerung, stellte ich die ImageUrl einer Bildsteuerung auf die Ressource URL:
image1.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "TestWebApp.Resources.Images.loading.gif");
Zur Laufzeit erscheint alles ohne Fehler zu arbeiten, aber es macht ein gebrochenes Bild. Hier ist die gerenderten Bild Quelle:
<img style="border-width:0px;" src="/WebResource.axd?d=8fC_1tLPjrUCxmFc_Q2MKY0-pHAak-sTWkpLLV3D56H_c08LujXC63ia2PNICE65_i-Q4JqprAigLpbrXG-rIAr6ePO4HHcdQKgdd3szlThv2gizxOJLJsPRNe-b_M6ApTwPsH_5oZAuONTN0cumOTRr1nA1&t=635133745137507721" id="ph1_image1">
Wenn ich auf diese URL in meinem Browser navigieren, erhalte ich eine 404 Die Ressource kann nicht gefunden werden. Was mache ich falsch?
EDIT: Es muss etwas Grundlegendes sein, das ich nicht verstehe und/oder ich mache etwas wirklich dummes. Here is a simple VS 2010 example. Ich habe alle erforderlichen Schritte ausgeführt, die ich kenne, um JScript1.js einzubetten und über WebResource.axd darauf zuzugreifen, aber es wird der Fehler angezeigt.
Im Debug überprüfen, dass Assembly.GetExecutingAssembly(). GetManifestResourceNames(); gibt die erwarteten Ressourcennamen zurück. Ziehen Sie außerdem in Betracht, eine Zeichenfolgenkonstante zu verwenden, um sicherzustellen, dass Sie dieselbe Zeichenfolge in Ihrem WebResource-Attribut und in Ihrem GetWebResourceUrl-Befehl verwenden. – Grax
@Grax - Danke, ich weiß das zu schätzen. Mit GetManifestResourceNames() habe ich mehrfach verifiziert, dass die verwendeten Strings eindeutig übereinstimmen und korrekt sind. Ich habe auch versucht, die Ressourcen aus ihren Unterordnern in den Projektstamm zu verschieben. Ich bemerkte, dass ich einen falschen Inhaltstyp "img/gif" hatte, den ich jetzt zu "image/gif" geändert habe, aber zu meiner Überraschung hat es nicht behoben. Ich habe auch bemerkt, dass das Ausgabefenster zwei System.Web.HttpExceptions mit dem Status "Dies ist eine ungültige WebResource-Anfrage" protokolliert. Ich bin mir nicht sicher, warum es zwei ist ... meine Vermutung war Firefox oder "Cassini" automatisch erneut versucht. – xr280xr
@Grax Ich habe die Frage mit einem Beispiel aktualisiert, wenn Sie es ausprobieren möchten – xr280xr