Pas de chargement de ressources: 403 forbidden with.optimisation js

j'essaie de minifier mon .js et .les fichiers css.

j'ai installé le pack Install-Package Microsoft.AspNet.Web.Optimization

lorsque j'active l'optimisation avec BundleTable.EnableOptimizations = true;

je reçois cette erreur sur le client:

N'a pas chargé la ressource: le serveur a répondu avec un statut de 403 (Interdit) http://localhost:22773/Content/themes/elevation/v=gnDLBbf1VVRuQDXtIYn1q0P3ICZG7oiwwgxPRbaLvqI1

quelqu'un a une idée de ce que je fais mal?

---BundleConfig info-------------------------------

 public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        BundleTable.EnableOptimizations = true;

        bundles.Add(new ScriptBundle("~/bundles/myJquery").Include(

           "~/Scripts/jquery-1.9.1.js",
          "~/Scripts/jquery-ui-1.10.1.custom.js",
            "~/Scripts/jquery.signalR-1.0.1.js",
            "~/Scripts/signalr-hubs.js",
            "~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js"
        ));


        bundles.Add(new ScriptBundle("~/bundles/shared").Include(
            "~/Scripts/global/prototypes.js",
            "~/Scripts/global/mathutil.js",
            "~/Scripts/global/elevationevents.js"
            ));


        bundles.Add(new ScriptBundle("~/bundles/core").Include(
            "~/Scripts/elevation/core/sys.config.js",
            "~/Scripts/elevation/core/bays.js",
            "~/Scripts/elevation/core/door.js",
            "~/Scripts/elevation/core/horiziontal.js",
            "~/Scripts/elevation/core/vertical.js"));


        bundles.Add(new StyleBundle("~/Content/themes/elevation").Include(
            "~/Content/themes/dialogs/dialogs.css",
            "~/Content/themes/social/ac/acSocial.css",
            "~/Content/themes/elevation/elevation.css"
      ));
    }
}

-----------------------------je n'ai pas encore eu ce compris---------------------

j'utilise 2013 .net et iis8 sur un windows7 OS

voici ma dernière erreur, je ne peux pas sortir ma solution du mode de débogage, parce que si je le fais, j'obtiens cette erreur ci-dessous.

    HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

Most likely causes:
A default document is not configured for the requested URL, and directory browsing is not enabled on the server.

Things you can try:
If you do not want to enable directory browsing, ensure that a default document is configured and that the file exists.
Enable directory browsing.
Go to the IIS Express install directory.
Run appcmd set config /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the server level.
Run appcmd set config ["SITE_NAME"] /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the site level.
Verify that the configuration/system.webServer/directoryBrowse@enabled attribute is set to true in the site or application configuration file.

Detailed Error Information:
Module     DirectoryListingModule
Notification       ExecuteRequestHandler
Handler    StaticFile
Error Code     0x00000000
Requested URL      http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1
Physical Path      c:usersadministratordocumentsvisual studio 2013ProjectsAlumCloudAlumCloudContentthemeselevation
Logon Method       Anonymous
Logon User     Anonymous
Request Tracing Directory      C:UsersAdministratorDocumentsIISExpressTraceLogFilesALUMCLOUD(3)

More Information:
This error occurs when a document is not specified in the URL, no default document is specified for the Web site or application, and directory listing is not enabled for the Web site or application. This setting may be disabled on purpose to secure the contents of the server.
View more information »

Voici l'url qui est créé par iis8 lorsqu'il n'est pas en mode de débogage qui produit l'erreur

http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1

Voici l'url qui renvoie le réel .CSS fichier sans aucune erreur

http://localhost:1499/Content/themes/elevation/elevation.css
21
demandé sur Filling The Stack is What I DO 2013-10-31 20:43:07

4 réponses

vient d'avoir le même problème. Dans mon cas, la solution était de donner un nom différent au paquet de contenu. Je pense que cela arrive parce que IIS intercepte les requêtes et traite le nom du paquet comme un répertoire et puisque le dossier de contenu existe vraiment, il renvoie l'erreur interdite. Donc, vous pouvez renommer ~/Content/themes/elevation pour dire ~/css/themes/elevation

bundles.Add(new StyleBundle("~/css/themes/elevation").Include(
            "~/Content/themes/dialogs/dialogs.css",
            "~/Content/themes/social/ac/acSocial.css",
            "~/Content/themes/elevation/elevation.css"
      ));

aussi, n'oubliez pas d'ajuster votre page de balisage / maître pour utiliser le nom de paquet révisé, i.e.

<%: Styles.Render("~/css/themes/elevation") %>

puis ajouter des directives de localisation sur le web.config pour permettre l'accès aux paquets:

<location path="css">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="bundles">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

Espérons que cette aide.

40
répondu Denis Ivin 2014-01-26 22:11:59

vous devez garder le nom du paquet similaire au chemin réel des ressources. sinon, le système ne peut pas trouver de ressources lorsqu'il est compilé avec debug='false' ou BundleTable.EnableOptimizations = true; . parce que le système utilise le nom du paquet pour générer le lien pour les ressources. donc vos noms de paquets devraient être comme ceci -

bundles.Add(new ScriptBundle("~/Scripts/myJquery").Include(
    "~/Scripts/jquery-1.9.1.js",
    "~/Scripts/jquery-ui-1.10.1.custom.js",
    "~/Scripts/jquery.signalR-1.0.1.js",
    "~/Scripts/signalr-hubs.js",
    "~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js"
));

bundles.Add(new ScriptBundle("~/Scripts/global/shared").Include(
    "~/Scripts/global/prototypes.js",
    "~/Scripts/global/mathutil.js",
    "~/Scripts/global/elevationevents.js"
));

bundles.Add(new ScriptBundle("~/Scripts/elevation/core/core").Include(
    "~/Scripts/elevation/core/sys.config.js",
    "~/Scripts/elevation/core/bays.js",
    "~/Scripts/elevation/core/door.js",
    "~/Scripts/elevation/core/horiziontal.js",
    "~/Scripts/elevation/core/vertical.js"
));

bundles.Add(new StyleBundle("~/Content/themes/dialogs/dialog").Include(
    "~/Content/themes/dialogs/dialogs.css"
));

bundles.Add(new StyleBundle("~/Content/themes/social/ac/ac").Include(
    "~/Content/themes/social/ac/acSocial.css"
));

Modifier Cela fonctionnera sur IIS 6. Cependant pour IIS 7 ou 7.5 la solution est autre chose. J'ai fait face au même problème lors de mon déploiement. une application dans IIS 7.5. La solution est d'installer un hotfix comme discuté dans ASP.NET MVC 4 sur IIS 7.5, renvoie 404. Quelque chose à voir avec la cartographie des itinéraires sans extension et ASP.NET 4.5 MVC 4 ne fonctionne pas sur Windows Server 2008 IIS 7

3
répondu th1rdey3 2017-05-23 10:31:31

Êtes-vous sûr que doit être effectivement /élévation/v=gn... mais pas /thèmes / élévation?v=gnDLBbf (avec ? )?

0
répondu Agat 2013-11-03 16:03:59

tel que mentionné dans la réponse acceptée, le nom du paquet que vous avez assigné se heurte à un véritable dossier existant. À titre d'exemple, considérons ce qui suit:

bundles.Add(new StyleBundle("~/content/epic").Include(
    "~/Content/Epic/StickyFooter.css"));

me donnera le même type d'erreur noté par OP:

{myURL}/content/epic/?v=YTZL7Up6r-0uQblkv6unjKN5Nfb3uwtE0bPz9nxbjDc1 Failed to load 

c'est parce que le chemin virtuel que l'optimiseur essaie de créer (content/epic) se trouve être un chemin de dossier existant dans mon site (j'ai un dossier à la racine appelé "content" et il contient un dossier appelé "épique"). Si je change mon chemin de faisceau à ce qui suit:

bundles.Add(new StyleBundle("~/content/epic2").Include(
    "~/Content/Epic/StickyFooter.css"));

le problème n'existe plus car je n'ai pas de dossier appelé" epic2 "dans mon dossier" content".

contrairement à la réponse acceptée, je conseillerais de ne pas changer un répertoire groupé tel que "~ / Content / A / b / " en "~ / css/a / b " parce qu'il y a un autre problème potentiel qui se posera si vos feuilles de style contiennent des références relatives à des fichier.

considérez mon AjaxLoadAnimation.la feuille de style css qui contient cet extrait:

...
background: rgba( 255, 255, 255, .5 ) url('images/spin.gif') 50% 50% no-repeat;
...

afin de s'assurer que la référence fonctionne pour une compilation optimisée et non optimisée, assurez-vous que le chemin pour le bundle correspond au chemin pour chaque élément du bundle. Si vos feuilles de style sont à ~ / Content/my/path, votre paquet devrait commencer par ~/Content/my / path. Pour éviter la question de L'OP, assurez-vous juste le nom ("sharedcss" dans mon cas) n'est pas incompatible avec un dossier existant.

bundles.Add(new StyleBundle("~/Content/my/path/sharedcss").Include(
    "~/Content/my/path/bootstrap.css",
    "~/Content/my/path/font-awesome.css",
    "~/Content/my/path/AjaxLoadAnimation.css"));

espérons que cela sauvera d'autres personnes de la même frustration.

0
répondu Timothy Kanski 2017-02-08 22:04:51