wake-up-neo.com

MVC-Bundling - Ressource konnte nicht geladen werden

Was könnte das verursachen? Ich arbeite mit einem DurandalJS-Projekt, das lokal gut funktioniert und läuft. Wenn ich versuche, mich auf einer Azure-Website bereitzustellen, wird die App veröffentlicht, schlägt jedoch im Browser fehl mit: 

Ressource konnte nicht geladen werden: Der Server antwortete mit dem Status 404 (Nicht gefunden) http://appsite.azurewebsites.net/Scripts/vendor.js?v=KJCisWMhJYMzhLi_jWQXizLj9vHeNGfm_1c-UfBB1

Ich habe nichts von der Bündelung angepasst.

meine Bündel-Konfigurationen: 

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

In meiner HTML-Seite verwende ich Folgendes: 

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

Dadurch wird verhindert, dass benötigte Bibliotheken (wie Knockout) geladen werden. Könnte es etwas in meiner web.comfig sein? Irgendwelche Tipps wären super. 

UPDATE:

Ich kann das genaue Problem lokal reproduzieren, wenn ich Folgendes mache: 

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

Ich denke, dass die Ansicht das Verzeichnis nicht finden kann, wenn es aus irgendeinem Grund veröffentlicht wird ... 

13
RobVious

Beseitigen Sie den ".js" -Teil des ScriptBundle-Namens. Aus irgendeinem Grund führt dies zu einem Durcheinander von Problemen. Es sollte so sein:

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

Dann fügen Sie es wie folgt zu Ihrer Seite hinzu:

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

1. Verwenden Sie keine Dateierweiterungen in Paketnamen

Als Brett Erwähnungen sollten Sie keine Dateinamenerweiterung in Ihrem Paketnamen haben.

Der Grund dafür ist, dass IIS Routing davon ausgeht, dass es sich um eine Datei handelt, die ist, wenn eine Erweiterung vorhanden ist.

2. Verwenden Sie keine Ordnerpfade als Bundle-Namen

Hinweis: Dies tritt bei der Entwicklung nicht auf, so dass Sie möglicherweise nur bei der Bereitstellung in der Produktion beißen

Die zweite zu vermeidende Sache ist, dass Sie Bündelnamen erhalten, die mit dem Namen eines echten Ordners in Ihrem Projekt/Ihrer Website übereinstimmen. IIS stimmt mit einem physischen Ordner überein, bevor er zum Bündel-Routing zurückkehrt.

z.B. Wenn Sie einen /Content/Login-Ordner für Ihre Anmeldeseitenstile haben, können Sie kein Paket mit dem Namen ~/Content/Login verwenden. IIS zeigt den physischen Ordner und nimmt an, dass es sich um eine Anforderung zum Durchsuchen des Verzeichnisses handelt (Sie erhalten wahrscheinlich einen 403-Fehler von Azure-Servern). 

Vorgeschlagene Benennung:

Es wird empfohlen, in allen Bundles den Namen bundle zu verwenden, um einen Konflikt zwischen Verzeichnissen zu vermeiden, und css ebenfalls einschließen. Sie sollten niemals einen Ordner mit dem Namen Bundles in Ihrem Projekt haben (wegen Problem 2 oben).

Beispiel-Bundle-Namen:

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

usw

22
Gone Coding

Ich hatte den ähnlichen Fehler.

In meinem Fall hatte ich ein Paket namens bundles.Add(new ScriptBundle("~/js"), das das Javascript-Paket bei der Veröffentlichung nicht erstellt hat.

Dann habe ich zu bundles.Add(new ScriptBundle("~/js/main") gewechselt und es hat funktioniert! Es ist komisch, aber es hat funktioniert. Ich bin mir jedoch nicht sicher, was genau darunter liegt. 

0
Dhanuka777