MVC Groupement - Echec du chargement de la ressource
Ce qui pourrait être la cause? Je travaille avec un DurandalJS projet qui construit et exécute localement très bien. Quand j'essaie de le déployer sur un Site web Azure, l'application publie, mais ne parvient pas dans le navigateur avec:
Échec du chargement de la ressource: le serveur a répondu avec un statut de 404
(Pas Trouvé)
http://appsite.azurewebsites.net/Scripts/vendor.js?v=KJCisWMhJYMzhLi_jWQXizLj9vHeNGfm_1c-uTOfBOM1
Je n'ai pas personnalisé tout de la le regroupement.
mon bundle configs:
public class BundleConfig
{
//For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
//Use the development version of Modernizr to develop with and learn from. Then, when you're
//ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery.ui.core.css",
"~/Content/themes/base/jquery.ui.resizable.css",
"~/Content/themes/base/jquery.ui.selectable.css",
"~/Content/themes/base/jquery.ui.accordion.css",
"~/Content/themes/base/jquery.ui.autocomplete.css",
"~/Content/themes/base/jquery.ui.button.css",
"~/Content/themes/base/jquery.ui.dialog.css",
"~/Content/themes/base/jquery.ui.slider.css",
"~/Content/themes/base/jquery.ui.tabs.css",
"~/Content/themes/base/jquery.ui.datepicker.css",
"~/Content/themes/base/jquery.ui.progressbar.css",
"~/Content/themes/base/jquery.ui.theme.css"));
}
}
DurandalBundleConfig:
public class DurandalBundleConfig {
public static void RegisterBundles(BundleCollection bundles) {
bundles.IgnoreList.Clear();
AddDefaultIgnorePatterns(bundles.IgnoreList);
bundles.Add(
new ScriptBundle("~/Scripts/vendor.js")
.Include("~/Scripts/jquery-{version}.js")
.Include("~/Scripts/jquery-ui-{version}.js")
.Include("~/Scripts/bootstrap.js")
.Include("~/Scripts/knockout-{version}.js")
.Include("~/Scripts/knockout.mapping-latest.js")
.Include("~/Scripts/isotope.js")
.Include("~/Scripts/toastr.js")
.Include("~/Scripts/tag-it.js")
);
bundles.Add(
new StyleBundle("~/Content/css")
.Include("~/Content/ie10mobile.css")
.Include("~/Content/app.css")
.Include("~/Content/bootstrap.min.css")
.Include("~/Content/bootstrap-responsive.min.css")
.Include("~/Content/font-awesome.min.css")
.Include("~/Content/durandal.css")
.Include("~/Content/starterkit.css")
.Include("~/Content/toastr.css")
.Include("~/Content/tag-it.css")
.Include("~/Content/zen-theme.css")
);
}
public static void AddDefaultIgnorePatterns(IgnoreList ignoreList) {
if(ignoreList == null) {
throw new ArgumentNullException("ignoreList");
}
ignoreList.Ignore("*.intellisense.js");
ignoreList.Ignore("*-vsdoc.js");
ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
//ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
//ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled);
}
}
Dans ma page html j'utilise ceci:
@Scripts.Render("~/Scripts/vendor.js")
C'est de prévenir les bibliothèques nécessaires (comme le knock-out) de chargement. Pourrait-il être quelque chose dans mon web.comfig? Des conseils serait génial.
Mise à JOUR:
Je peux reproduire exactement le problème localement, si je ne les suivants:
new ScriptBundle("~/Scripts/vvendor.js") //change the virtual output directory here
Je pense que cela signifie que la vue ne peuvent pas trouver le répertoire quand il est publié pour une raison...
Vous devez vous connecter pour publier un commentaire.
Se débarrasser de ".js" la partie sur le ScriptBundle nom. Pour une raison qui provoque un désordre de problèmes. Il devrait être ceci:
Puis l'ajouter à votre page comme ceci:
1. Ne pas utiliser les extensions de fichiers bundle noms
Comme Brett mentionne, vous ne devriez pas avoir une extension de fichier dans votre nom de bundle.
La raison pour cela est que IIS routage assumera la demande est pour un fichier si une extension est présente.
2. Ne pas utiliser des chemins d'accès au dossier en tant que bundle noms
Remarque: Cela ne se produit pas en cours de développement, ne peut vous mordre quand vous déployez pour la production
La deuxième chose à éviter est d'avoir bundle noms qui correspondent le nom d'un dossier dans votre projet ou votre site web. IIS trouvera un dossier physique avant de stations pour le bundle de routage.
par exemple, si vous avez un
/Content/Login
dossier de votre page de connexion styles, vous ne pouvez pas utiliser un bundle nommé~/Content/Login
. Services internet (IIS) voir le dossier physique et supposons qu'il s'agit d'un répertoire de demande de navigation (vous aurez sans doute une erreur 403 de serveurs Azure).Suggéré de nommage:
Vous suggérons d'utiliser le nom
bundle
dans tous les groupes, afin d'éviter un répertoire clash, et comprennentcss
ainsi. Ne jamais avoir un dossier appelé bundles dans votre projet (à cause de la question 2 ci-dessus).Exemple bundle noms:
etc
J'ai eu la même erreur.
Dans mon cas, j'ai eu un bundle nommé
bundles.Add(new ScriptBundle("~/js")
qui n'a pas créé le javascript bundle lors de la publication.Puis j'ai changé pour
bundles.Add(new ScriptBundle("~/js/main")
et cela a fonctionné! C'est bizarre, mais ça a fonctionné. Mais je ne sais pas quel est exactement le problème sous-jacent.La version de Optimisation Web utilisez-vous? Reportez-vous à cette Lien pour plus d'informations sur la dernière optimisation de la bibliothèque. J'ai rencontré des dernières modifications après la mise à jour vers la version 1.1
J'ai eu le même problème hier et trouvé une solution de contournement pour elle.
Mais il consiste à se débarrasser de l'ensemble. Il doit y avoir une meilleure façon de force d'Azur à utiliser un js bundle mais je n'ai pas trouvé (encore).
Voici la solution: Vérifier les fichiers js sont inclus dans le scriptbundle dans DurandalBundleConfig.cs et notamment de ceux des fichiers sur l'Index.cshtml: