J'essaie de réduire mes fichiers .js et .css.
J'ai installé le Install-Package Microsoft.AspNet.Web.Optimization
emballé
Quand j'active l'optimisation avec BundleTable.EnableOptimizations = true;
Je reçois cette erreur sur le client:
Échec du chargement de 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?
--- Info BundleConfig -------------------------------
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 toujours pas compris ceci ------------- --------
J'utilise 2013 .net et iis8 sur un système d'exploitation Windows7
Voici ma dernière erreur, je ne peux pas sortir ma solution du mode débogage, car si je reçois l'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:\users\administrator\documents\visual studio 2013\Projects\AlumCloud\AlumCloud\Content\themes\elevation\
Logon Method Anonymous
Logon User Anonymous
Request Tracing Directory C:\Users\Administrator\Documents\IISExpress\TraceLogFiles\ALUMCLOUD(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 créée par iis8 lorsqu'elle n'est pas en mode débogage et qui génère l'erreur
http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1
Voici l'URL qui renvoie le fichier .css actuel sans erreur
http://localhost:1499/Content/themes/elevation/elevation.css
Je viens d'avoir le même problème. Dans mon cas, la solution consistait à attribuer un nom différent à l'ensemble de contenu. Je pense que cela se produit car IIS intercepte les demandes et traite le nom de l'ensemble comme un répertoire et, comme le dossier Content existe réellement, l'erreur renvoyée est renvoyée. 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"
));
De plus, n'oubliez pas d'ajuster votre page de balisage/maquette pour utiliser le nom de regroupement modifié, c'est-à-dire
<%: Styles.Render("~/css/themes/elevation") %>
Ajoutez ensuite des directives d'emplacement au fichier web.config pour autoriser l'accès aux ensembles:
<location path="css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="bundles">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
J'espère que cela t'aides.
vous devez conserver le nom du bundle similaire au chemin d'accès réel aux 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 vers les ressources. donc vos noms de paquet 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"
));
Edit Ceci fonctionnera sur IIS 6. Toutefois, pour IIS 7 ou 7.5, la solution est autre chose. J'ai rencontré le même problème lorsque j'ai déployé une application dans IIS 7.5. La solution consiste à installer un correctif, comme indiqué dans ASP.NET MVC 4 sur IIS7.5, renvoie 404. Le mappage de routage sans extension et ASP.NET 4.5 MVC 4 ne fonctionne pas sur Windows Server 2008 IIS 7
Êtes-vous sûr que cela doit être réellement/altitude/v = gn ... mais pas/thèmes/élévation? V = gnDLBbf (avec? )
Comme indiqué dans la réponse acceptée, le nom de l'ensemble que vous avez attribué entre en conflit avec un dossier existant. A titre d'exemple, considérons les éléments suivants:
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
Cela est dû au fait que le chemin virtuel que l’optimiseur tente de créer (contenu/epic) se trouve être un chemin de dossier existant sur mon site (j’ai un dossier dans la racine appelé "contenu" et qui contient un dossier appelé "épique"). . Si je change le chemin de mon paquetage comme 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 vous déconseille de modifier un répertoire de paquetage tel que "~/Content/a/b /" en "~/css/a/b" car un autre problème potentiel se produira si vos feuilles de style contiennent des références relatives. vers des fichiers externes.
Considérez ma feuille de style AjaxLoadAnimation.css qui contient cet extrait:
...
background: rgba( 255, 255, 255, .5 ) url('images/spin.gif') 50% 50% no-repeat;
...
Afin de vous assurer que la référence fonctionne pour une compilation optimisée et non optimisée, assurez-vous que le chemin d'accès à l'ensemble correspond au chemin d'accès pour chaque élément de l'ensemble. Si vos feuilles de style se trouvent dans ~/Content/my/path, votre ensemble devrait également commencer par ~/Content/my/path. Pour éviter tout problème avec OP, assurez-vous simplement que le nom ("sharedcss" dans mon cas) n’entre pas en conflit 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"));
J'espère que cela sauvera d'autres personnes de la même frustration.