web-dev-qa-db-fra.com

Regroupement MVC - Echec du chargement de la ressource

Qu'est-ce qui peut causer cela? Je travaille avec un projet DurandalJS qui construit et fonctionne localement très bien. Lorsque j'essaie de déployer sur un site Web Azure, l'application est publiée mais échoue dans le navigateur avec: 

Échec du chargement de la ressource: le serveur a répondu avec un statut de 404 (Introuvable) http://appsite.azurewebsites.net/Scripts/vendor.js?v=KJCisWMhJYMzhLi_jWQXizLj9vHeNGfm_1c-uTOfBOM1

Je n'ai personnalisé aucun des ensembles.

mes configs bundle: 

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);
}
} 

J'utilise ceci dans ma page html: 

@Scripts.Render("~/Scripts/vendor.js")

Cela empêche le chargement des bibliothèques requises (telles que knockout). Pourrait-il y avoir quelque chose dans mon web.comfig? Tous les conseils seraient géniaux. 

UPDATE:

Je peux reproduire le problème exact localement si je fais ce qui suit: 

new ScriptBundle("~/Scripts/vvendor.js")  // change the virtual output directory here

Je pense que cela signifie que la vue ne peut pas trouver le répertoire lorsqu'il est publié pour une raison quelconque ... 

13
RobVious

Débarrassez-vous de la partie ".js" sur le nom ScriptBundle. Pour une raison quelconque, cela cause un gâchis de problèmes. Ce devrait être ceci:

...
new ScriptBundle("~/Scripts/vendor")
...

Ajoutez-le ensuite à votre page comme ceci:

@Scripts.Render("~/Scripts/vendor")
15
Brett

1. Ne pas utiliser les extensions de fichier dans les noms de paquet

Comme Brett mentionne, vous ne devriez pas avoir une extension de fichier dans le nom de votre paquet.

La raison en est que le routage IIS suppose que la demande concerne un fichier si une extension est présente.

2. N'utilisez pas les chemins de dossier comme noms d'ensembles

_ {Remarque: cela ne se produit pas en développement, vous ne pouvez donc vous mordre que lorsque vous vous déployez en production} _

La deuxième chose à éviter est d'avoir des noms d'ensembles qui correspondent au nom d'un dossier réel dans votre projet/site web. IIS correspondra à un dossier physique} avant de recourir au routage de l'ensemble.

par exemple. Si vous avez un dossier /Content/Login pour vos styles de page de connexion, vous ne pouvez pas utiliser un ensemble appelé ~/Content/Login. IIS verra le dossier physique et supposera qu'il s'agit d'une demande de navigation dans l'annuaire (vous obtiendrez probablement une erreur 403 des serveurs Azure). 

Nom suggéré:

Vous suggérons d'utiliser le nom bundle dans tous les ensembles, afin d'éviter un conflit d'annuaire, et d'inclure également css. Vous n'avez jamais de dossier appelé bundles dans votre projet (à cause du problème 2 ci-dessus).

Exemple de nom de paquet:

  • "~/bundles/jquery"
  • "~/bundles/addins"
  • "~/bundles/css"
  • "~/bundles/css/login"
  • "~/bundles/css/bootstrap"

etc

22
Gone Coding

J'ai eu la même erreur.

Dans mon cas, j'avais un paquet nommé bundles.Add(new ScriptBundle("~/js") qui n'a pas créé le paquet javascript lors de sa 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 le problème sous-jacent exact. 

0
Dhanuka777