2009-04-08 13 views
10

Ich versuche, eine Steuerelementbibliothek in einer DLL zu exportieren, damit andere Entwickler im Büro konsumieren können.WebResource.axd leer oder nicht gefunden

Die Lösung, die ich ursprünglich erstellt wurde, sieht wie folgt aus:

Lösung 1:
- Mri.Controls (Klassenbibliothek)
- Mri.FmTool (Web Application)

Mri.FmTool Referenzen Mri.Controls.

Innerhalb Mri.Controls habe ich einige Javascript WebResources. Mri.FmTool scheint die WebResources gut zu lesen, alle meine Javascript Web Ressourcen erscheinen so wie sie sollten wenn die Mri.FmTool Web App läuft.

So, jetzt habe ich eine einfache Lösung zu schaffen versuchte Mri.FmTool

Lösung 2 zu verbrauchen:
- Mri.ConsumerTest (Web Application)

Ich habe die neueste Mri.Controls .dll und fügte es als Referenz zur Mri.ConsumerTest-Anwendung hinzu. Alle Steuerelemente von Mri.Controls scheinen im Mri.ConsumerTest zu funktionieren. Intellisense arbeitet, es kompiliert, keine Probleme.

Allerdings, wenn es ausgeführt wird, die meisten der WebResource.axd Dateien sind leer, nur leer. Eine WebResource.axd-Datei ist nicht leer, es heißt einfach "Diese Ressource kann nicht gefunden werden".

Hier sind die Eigenschaften der Javascript-Dateien in das Fenster Eigenschaften:
Build Action: "Embedded Resource"
kopieren Ausgabeverzeichnis: "Copy immer"

Welche Schritt bin ich dabei?

+0

Vielen Dank für das Stellen dieser Frage! Ich hatte nicht die * gleiche * Frage, aber ich hatte ein ähnliches Problem. Die Eigenschaft "Build Action: Embedded Resource" war jedoch nicht bekannt. Vielen Dank! – Matt

Antwort

2

Ich bemerkte, dass meine WebResource CSS-Dateien ordnungsgemäß geladen wurden, aber Javascript in WebResource in der neuen Lösung wurde nicht geladen.

Anstatt also mit dem System.Web.UI. ClientScriptManager verwendet, um die WebResources zu registrieren, wechselte ich auf System.Web.UI. ScriptManager. Nun werden die Dateien kommen aus ScriptManager.axd (statt WebResource.axd). Dies schien das Problem zu beheben.

Alter Code vor Fix:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

Der Code:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

Der Code-Snippet System.Web.UI.ClientScriptManager

Neuen Code nach Fix oben verwendet Das obige Snippet verwendet System.Web.UI.ScriptManager

Aus meiner Sicht wurde ClientScriptManager in 2.0 eingeführt. Ich glaube, ScriptManager ist die neue, verbesserte Möglichkeit, Skripte zu verwalten, die viel mehr Funktionalität bietet.

/shrug

+0

Ich bin nicht sicher, dass ich folge, können Sie eine kleine Post Code-Ausschnitt von dem, was du meinst? –

+0

Code-Snippets hinzugefügt – taco

+0

Der relevante Teil ist eine * statische * Funktion: 'ScriptManager.RegisterClientScriptResource()' - dauerte eine Weile, bevor ich das herausgefunden. – vdboor

2

Sind die Ressourcen als Teil der DLL festgelegt?

Öffnen Sie die Lösung Mri.Controls & sehen die Eigenschaften Ihrer Javascript-Ressource-Dateien.
Ich denke, dass dort das Problem sein könnte.

+1

Meine Javascript-Dateien haben die folgenden Eigenschaften in Mri.Controls - Build Action: Eingebettete Ressource; In Ausgabeverzeichnis kopieren: Immer kopieren – taco

+1

THanx. Das war mein Problem. Altes wiederbelebtes Projekt - Aus irgendeinem Grund wurden alle Ressourcendateien anstelle der eingebetteten Ressource auf Inhalt zurückgesetzt. –

3

Sie fehlen wahrscheinlich die [assembly: WebResource ("YourNameSpace.YourFile.js", "text/javascript")] Attribut. WebResource.axd benötigt dieses Attribut. Sie können this KB Artikel für zusätzliche Informationen zu diesem Thema überprüfen.

+0

Ich hatte bereits [Assembly: WebResource ("Mri.Controls.Resources.Scripts.Core.js", "text/javascript")] in meiner Assembly info .... – taco

Verwandte Themen