No estoy seguro si es la optimización web, o WebGrease que es tan delicado pero uno (o ambos) de ellos es y debe ser extremadamente cuidadoso.
En primer lugar no hay nada malo con su código:
bundles.Add(new StyleBundle("~/content/css").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
De hecho, esto es exactamente lo que hace Microsoft. La razón principal por la que no usa usa ~/bundles
para css es que las rutas relativas se estropean para las imágenes. Piense en cómo ve su navegador un paquete, exactamente de la misma forma en que ve cualquier otra URL, y todas las reglas relacionadas con la ruta normal aún se aplican con respecto a las rutas relativas. Imagina que tu CSS tiene una ruta de imagen al ../images/bullet.png
. Si estuviera usando ~/bundles
, el navegador estaría buscando en un directorio sobre bundles
que en realidad no existe. Probablemente terminará buscando en ~/images
donde probablemente lo tengas en ~/content/images
.
he encontrado un par de cosas que realmente pueden romper y provocar errores 404:
- FYI: Mi estructura de directorios es
Content/CSS
que contiene una carpeta para las imágenes images
CSS.
- que tienen
EnableOptimizations=true
para forzar el uso de haces mientras que las pruebas
- Lo primero que debe hacer es 'Ver código fuente' y haga clic en los enlaces de CSS para ver si funcionan
Digamos que estamos desarrollando un sitio sobre gatos Es posible que tenga este
@Styles.Render("~/Content/css/cats.css") // dont do this - see below why
bundles.Add(new StyleBundle("~/content/css/cats.css").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
Esto genera un vínculo CSS para esta ruta en el código HTML:
/Content/css/cats.css?v=JMoJspikowDah2auGQBfQAWj1OShXxqAlXxhv_ZFVfQ1
Sin embargo, esto dará un 404 porque puse una extensión .css e IIS (creo) obtiene confuso.
Si lo cambio a esto, entonces funciona bien:
@Styles.Render("~/Content/css/cats")
bundles.Add(new StyleBundle("~/content/css/cats").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
Otro problema ya se ha comentado en otras es que no se debe hacer
@Styles.Render("~/Content/css")
si tiene un directorio css o archivo (es poco probable que tenga un archivo llamado css
sin extensión) en su directorio Content
.
Un truco adicional es que usted necesita para asegurarse de que el código HTML generado tiene un número de versión
<link href="/Content/css/cats?v=6GDW6wAXIN5DJCxVtIkkxLGpojoP-tBQiKgBTQMSlWw1" rel="stylesheet"/>
Si no lo hace y se parece a esto, entonces es probable que no tienen una coincidencia exacta para el nombre del paquete entre su tabla de paquete y en su archivo cshtml.
<link href="/Content/css/cats" rel="stylesheet"/>
¿Qué ocurre si crea los archivos ~ content/css/reset.min.css y bla.min.css que EnableOptimizations = true tiende a buscar? – Phil
@Phil todavía 404. – sed
Acabo de crear un proyecto vacío y lo intenté con dos archivos 'css' y sucedió lo mismo. Tal vez es porque puse mis archivos css en la carpeta '/ content/css /' y no solo '/ content /' sin embargo lo dudo ... – sed