WebResource l'Enfer - ressource ne peut pas être trouvé
Marqué un fichier javascript en tant que "ressource Incorporée"
Ajouté WebResource attribut à mon AssemblyInfo classe
Maintenant, je vais essayer pour la sortie du javascript intégré à ma page principale. Tout ce que je reçois est une "Ressource Web introuvable" à partir du web url de ressource.
Projet Nom De L'Assembly:
CompanyProduct
Projet D'Espace De Noms Par Défaut:
Company.Product.Web
Fichier Javascript situé à:
Library/navigation.js
AssemblyInfo:
[assembly: WebResource("CompanyProduct.Library.navigation.js", "text/javascript")]
Code dans la page maître:
Page.ClientScript.RegisterClientScriptInclude("NavigationScript", Page.ClientScript.GetWebResourceUrl(this.GetType(), "CompanyProduct.Library.navigation.js"));
Erreur de serveur dans l'Application'/'.
La ressource ne peut pas être trouvé.
Description: erreur HTTP 404. La ressource que vous recherchez (ou une de ses dépendances) peut avoir été supprimée, que son nom ait changé ou est temporairement indisponible. Veuillez consulter l'URL suivante et assurez-vous qu'il est correctement orthographié.
URL Demandée: /WebResource.axd
Informations de Version: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433
Pas de
À l'aide de Red Gate .NET Reflector je peux voir la ressource est nommé "Company.Product.Web.Library.navigation.js" Une autre chose, mon code dans la page principale est contenue dans le OnPreRender fonction de la page maître. Toute autre conseils?
Je voudrais vraiment obtenir ce résolues..
OriginalL'auteur Naeem Sarfraz | 2008-11-26
Vous devez vous connecter pour publier un commentaire.
Au lieu de
this.GetType()
, obtenir un type à partir de l'assembly qui contient la ressource.. c'est à dire:?
Manifestement vous ne comprenez pas le problème, le "Class1" était juste un exemple d'un nom de classe, vous devez choisir ce que vous voulez à partir de la bibliothèque, l'important est de vous fournir l'appel de méthode à un type qui est de la MÊME assemblée que lorsque l'attribut embed est..
Des excuses. Je travaille au sein d'un même projet. Je peux voir le chemin à l'aide de réflecteur, mais pas de joie à l'obtenir comme indiqué dans ma question.
OriginalL'auteur meandmycode
Est arrivé à la même question aujourd'hui. Le problème semble être que AssemblyResourceLoader utilise l'assembly contenant le type fourni à
GetWebResourceUrl
méthode (premier paramètre) qui, dans votre cas, est créé dynamiquement de l'assemblée de la page maître (.le maître) et ne contient pas la ressource que vous recherchez. Je suppose que votre fichier de ressource est inclus dans la même assemblée que votre base de page maître (.maître.cs fichier), vous pouvez utilisertypeof
pour obtenir l'instance de Typeoù MyMasterPage est le nom de votre page maître
Ressemble, il est également possible d'utiliser tout autre type déclaré dans le même assemblée où la ressource est incorporé.
OriginalL'auteur dh.
Je pense que vous voulez les chemins d'accès complets à être basé sur l'espace de noms, pas de l'assemblée; Donc, partout où vous disposez d' "CompanyProduct.Library.navigation.js" et remplacer par "Company.Product.Web.Library.navigation.js". Il y a aussi la méthode de la Page.ClientScript.RegisterClientScriptResource() qui fait ce que vous avez besoin dans une méthode (par opposition à l'aide RegisterClientScriptInclude(GetWebResourceUrl()).
Company.Product.Web.Library.navigation.js
. Bien que l'utilisation deRegisterClientScriptResource
n'ai pas l'impression de faire une différence, le problème persiste.OriginalL'auteur Chris Shaffer
C'est clutching at straws un peu, mais se pourrait-il que votre asp.net n'est pas configuré pour traiter la webresource.axd correctement? Si quelque chose a mal tourné, peut-être le gestionnaire de l'étiquette est manquante à partir du web de l'appareil.config?
Les gestionnaires http tag de C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config devrait avoir un webresource.axd entrée comme ceci:
Également double vérifier il n'y a pas de gestionnaire d'entrée dans le projet web.config qui pourrait être remplaçant le réglage de la machine, de web.config.
OriginalL'auteur Helephant
Pour toute personne qui se trouve être à l'aide de VB - il y a une différence de comportement entre le compilateur visual basic et le compilateur C#.
En VB la ressource incorporée doit être au niveau de la racine de votre projet. Quand j'ai regardé l'assembly généré avec ILDASM, j'ai trouvé que le nom de la ressource incorporée JAMAIS il comprend les noms de tous les sous-dossiers. Cela provoque finalement la AssemblyLoader de regarder dans le mauvais endroit pour la ressource incorporée.
Lorsque vous répétez l'expérience avec C# il NE comprend que les noms des sous-dossiers.
MODIFIER Modifié pour refléter le fait que pour VB la ressource, il doit être au niveau de la racine.
Ce que j'ai réussi a avoir la ressource incorporée dans le même dossier que le code qui l'utilise (plus agréable pour le contrôle de la source). J'ai ensuite MENTI dans l'Attribut ET de la Page.ClientScript.GetWebResourceUrl appel à compte pour le compilateur visual basic affirmant que la ressource incorporée a pas de chemins.
OriginalL'auteur RichardHowells
ce blog a deux ans maintenant... mais j'ai j'ai passé des jours à essayer de faire ce travail. D'essayer d'obtenir une embarqués fichier js à réellement me donner un WebResource.asx chaîne de requête qui serait à l'œuvre. La dernière pièce qui semble s'estomper ici, c'est que le fichier que vous avez incorporé doit être dans le même répertoire physique de la structure que les contrôles de code-behind que vous appelez
GetWebResourceUrl()
. Si vous avez placé le fichier incorporé dans un dossier nommé "scripts", qui s'appelait alorsGetWebResourceUrl()
à partir de la page maître qui ne se trouve PAS dans "scripts", le ResourceURL retourné pointe vers le mauvais endroit... donc TOUJOURS retourner une erreur 404.si vous utilisez la MasterPage que le type pour le premier param alors ça ne fonctionnera jamais.
GetWebResourceUrl(typeof(MasterPage)
,... Je suppose que la vraie clé ici est que vous devez laisser tomber la ressource incorporée dans le même emplacement que vous allez utiliser comme type pour le premier paramètre de la ResourceURL. Après 3 jours de lutte avec cette chose, il a enfin trouvé ma Ressource.OriginalL'auteur david
Juste eu ce problème et résolu à partir de meandmycode réponse; cependant, peut-être plus une explication détaillée est nécessaire.
Lorsque vous vous enregistrez le bloc de script à l'aide de la
ScriptManager.RegisterClientScriptInclude
méthode "type" paramètre doit être d'une classe à l'intérieur du même projet que le .js script. Si vous n'avez pas de classe associée avec le bloc de script que vous allez juste pour en prendre une autre classe.OriginalL'auteur Mark Dornian
J'ai eu un problème similaire et, dans mon cas, elle a été causée par le fait que
Page.ClientScript.GetWebResourceUrl
resourceName paramètre est sensible à la casse.Pas vraiment documenté (c'est peut-être implicite), mais j'ai trouvé ce code "Le nom logique est sensible à la casse, même si elle contient les noms de fichiers qui ne sont généralement pas sensibles à la casse"
Ouais la seule erreur que j'ai vu qui m'a orienté dans la bonne direction a été une erreur du Journal des Événements de niveau message qui dit "Une erreur s'est produite de traitement d'un site web ou un script demande de ressource...". J'ai regardé le chemin tant de fois avant de réaliser le "J" dans mon jQuery projet du chemin d'accès au dossier était minuscule, où la chaîne que j'ai envoyé à la webresource avait majuscules.
OriginalL'auteur Guish
La réponse à votre question dépend entièrement de l'endroit où vous avez ce fichier dans votre projet, et ce que l'espace de noms par défaut est. Comme Chris l'a mentionné, le chemin vous fournir les méthodes d'enregistrer le script a besoin du chemin de localiser la ressource incorporée. Vous n'avez pas seulement correspondre à la chaîne de caractères que vous spécifiez dans votre AssemblyInfo. La chaîne doit être le chemin d'accès à la ressource.
< projet par défaut de l'espace de noms >/< tous les sous-dossiers que vous avez le fichier >/< nom de fichier >
OriginalL'auteur sliderhouserules
Tourner celui-ci;
dans cette;
OriginalL'auteur Thomas Hansen
Est la ressource que vous êtes en train d'ajouter dans un montage différent pour le code que vous utilisez pour générer la balise de script? Si c'est le cas, je pense que le présent.GetType() renvoie une référence à un type dans le mauvais assemblage de sorte que la ressource web code n'aurez pas le droit de l'assemblée de charger la ressource.
Je ne sais pas pour vous que ce serait un problème, mais il me semble que le code qui a généré le nom aurait besoin de savoir ce que l'assemblée de la ressource ou il ne serait pas en mesure de carte de retour à l'assemblée lors de la réception de la demande à partir du navigateur.
OriginalL'auteur Helephant
J'ai eu une situation similaire, et après 4 heures de recherche et de tests, j'ai obtenu la solution finale: le espace de Noms par Défaut doit être le même que le Nom de l'Assembly.
(On pourrait utiliser un Réflecteur ou d'utiliser l'extrait de code ci-dessous pour obtenir les noms des ressources intégrées.
OriginalL'auteur jaraics
Comme meandmycode déjà mentionné, le type passé à
GetWebResourceUrl
est la cléJe n'ai pas envie de passer du type où il n'a pas vraiment d'importance, je l'ai résolu avec ce genre de méthode d'assistance
OriginalL'auteur mizuki nakeshu
[assembly: ] attributs doivent être dans les Propriétés\AssemblyInfo.cs fichier. Même si le projet est compilé lors de l'assemblée attributs sont dans le fichier de contrôle personnalisé, ils ne sont pas visibles à WebResource.axd.
OriginalL'auteur kerem