CSS, imágenes, JS no se cargan en IIS

126

Todas mis aplicaciones estaban funcionando bien, pero de repente todos los sitios bajo IIS no están cargando CSS, imágenes, scripts. Redirige a la página de inicio de sesión.

Si inicio sesión funciona bien. por ejemplo, mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

En mi máquina local funciona bien sin iniciar sesión.

Imran Rashid
fuente
etiquetado incorrecto, no es una pregunta real ...
Renatas M.
3
Vuelva a la versión etiquetada porque creo que sé qué está causando este comportamiento y las etiquetas son relevantes. Si no, votaré para cerrar.
Tim Medora
No es un problema con esta configuración web. He probado todas las respuestas. Creo que es un problema con IIS porque todos los sitios funcionaban bien antes de implementar una aplicación que afecta a todos en iis
Imran Rashid
@ImranRashid: ¿este sitio hereda la configuración de otro sitio en IIS?
Tim Medora
@Tim Medora - No señor, no está heredando de otro sitio.
Imran Rashid

Respuestas:

185

El problema puede ser que IIS no está sirviendo contenido estático, que puede configurar aquí: ingrese la descripción de la imagen aquí

Fuente: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

Windows 10

versión de Windows 10 del cuadro de diálogo anterior

Matt Kocaj
fuente
2
Tuve un problema similar, me di cuenta de que era un problema de instalación, ¡pero al habilitar el contenido estático parece haberlo solucionado!
ife labolz
55
Esto salvó mi tocino, pensarías que está habilitado por defecto, pero en Windows 10 no lo está.
Justin
3
Lame esto no está marcado por defecto.
RayLoveless
3
@RayLoveless Creo que lo lamentable es que MVC tiene una fuerte dependencia de que esta característica de IIS esté habilitada para que el contenido estático funcione en MVC. Creo que no deberían estar tan unidos. Quizás .NET Core arregle esto. : p
Matt Kocaj
2
Y aquí estamos nuevamente, salvados por la misma respuesta, 2 años después de la última vez.
Eric Wu
176

Tuve el mismo problema, una página no autenticada no cargaba CSS, JS e imágenes cuando instalaba mi aplicación web en ASP.Net 4.5 en IIS 8.5 en Windows Server 2012 R2.

  1. Tenía instalada la función de contenido estático
  2. Mi aplicación web estaba en la carpeta wwwroot de IIS y todos los permisos de la carpeta de Windows estaban intactos (los predeterminados, incluidos IIS_IUSRS)
  3. Agregué autorización para todas las carpetas que contenían CSS, JS e imágenes.
  4. Tenía la carpeta de la aplicación web en un recurso compartido de Windows, así que eliminé el uso compartido como lo sugirió @ imran-rashid

Sin embargo, nada parecía resolver el problema. Luego, finalmente intenté establecer la identidad del usuario anónimo en la Identidad del grupo de aplicaciones y comenzó a funcionar.

Haga clic en la función de autenticación Editar la autenticación anónima Cambiar a la identidad del grupo de aplicaciones

Me golpeé la cabeza durante unas horas y espero que esta respuesta ahorre la agonía de mis colegas desarrolladores.

Realmente me gustaría saber por qué esto está funcionando. ¿Alguna idea?

Moiz Tankiwala
fuente
1
Esto también funcionó para mí. Creo que esto se debe a que el "Usuario específico" no tenía permisos para la ubicación de la carpeta, donde la identidad del grupo de aplicaciones sí.
dcinadr
44
Pocas horas ? Me llevó más de 4. Gracias a Dios, me ayudó :)
Tito
3
Tengo este problema de repente, después de compartir la carpeta wwwroot. Su solución lo solucionó. Gracias por tomarse el tiempo de agregarlo y por los detalles.
Recurso
1
¡LEYENDA! Muchas gracias
David
1
Esta es la segunda vez que tengo que buscar tu publicación, porque ahora me salvó dos veces. Te votaría 100 veces si pudiera. Estaba usando Umbraco - configuré mi IIS local usando Documents \ Visual Studio 2013 \ Projects - agregado CPUName\IIS_IUSRSy aún no se cargaba. ¡Gracias de nuevo!
Rob Scott
18

Tuve un error similar, mi consola se veía así:

error

Mi problema era que estaba ejecutando mi sitio en una subcarpeta ya que la compañía estaba usando un dominio superior y ningún subdominio. Me gusta esto:

host.com/app1

host.com/app2

Mi código se veía así para incluir scripts que funcionaban bien en localhost pero no en app1 o app2:

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

Se agregó un signo de tilde ~a src y luego todo funcionó:

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

Explicación de ~vs /:

  • / - Raíz del sitio
  • ~/ - Directorio raíz de la aplicación

/devolverá la raíz del sitio ( http://host.com/),

~/devolverá la raíz de la aplicación ( http://host.com/app1/).

Ogglas
fuente
1
arriba voto Estaba teniendo este problema, la aplicación no cargaba nada en el escenario sino cargaba en producción. Yo uso @ Url.Content () también con ~ /. No probado en producción, pero creo que funcionará
Kross
17

Intente eliminar la sección staticContent de su web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
intrepidis
fuente
¿Eliminar staticContent funciona pero ahora todas mis fuentes son 404?
Rajesh Sivasankaran
No soy un experto en esto, pero quizás necesite agregar las declaraciones de tipo MIME correctas para sus fuentes a través del Administrador IIS en la pestaña Encabezados HTTP de las propiedades del sitio web.
intrepidis
1
Esto resolvió el problema para mí, porque tengo algunas entradas de archivo .woff allí en desarrollo, pero en producción la misma configuración necesita un ajuste
guíaX
Gracias intrepidis, en mi caso su sugerencia funcionó para mí. ¡Salud!
user752746
15

Es posible que esto no responda a su pregunta, pero he estado golpeando mi cabeza con los mismos síntomas con una nueva instalación de IIS. CSS, JS e imágenes no aparecían. Se debió a que la función "Contenido estático" no se instaló en IIS 7.5.

user23462
fuente
Es posible que tenga un problema diferente y mi problema fue cuando muevo el directorio de inetpub, elimina los permisos cuando revierto mi problema fue solucionado.
Imran Rashid
7

Probablemente tenga habilitada la autenticación de Windows en su web.config. En una máquina local, sus credenciales de Windows se pasan automáticamente y funciona. En un sitio en vivo, se lo trata como un usuario anónimo (la configuración de IE puede controlar esto, pero no lo modifique a menos que realmente sepa lo que está haciendo).

Esto provoca lo siguiente:

  • Debe iniciar sesión explícitamente.
  • Los recursos como scripts y CSS no se muestran en la página de inicio de sesión porque no está autenticado.

Esto no está roto, solo funciona según lo previsto, sino para "arreglar" esto:

  • Cambie el tipo de autenticación en web.config si no desea iniciar sesión.
  • Y / o agregue un archivo web.config en el directorio (s) que contiene CSS, imágenes, scripts, etc., que especifica las reglas de autorización.
Tim Medora
fuente
el modo de autenticación es Forms not window? ¿El archivo de configuración web de la aplicación anula la configuración de la máquina? ¿Hay alguna configuración en IIS que esté causando esto?
Imran Rashid
La autenticación de formularios también activará una solicitud de inicio de sesión y evitará que se sirvan recursos como scripts e imágenes. Vea las otras respuestas para los cambios específicos que necesitaría hacer en web.config. Guardar la configuración en IIS modificará la configuración web.
Tim Medora
Lo resuelvo yo mismo. El problema surge cuando comparto la carpeta wwwroot en mi red. Cambia el permiso de directorio. Cuando no comparto y configuro el permiso por defecto. Se resolvió :) Gracias Tim
Imran Rashid
6

Agregue esto a su web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Mathias F
fuente
La ruta es relativa, a veces agregar la raíz resolverá esto. Intente configurar la ruta a"~/Images"
StuperUser
6

Use esto en la sección de configuración de su archivo web.config:

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
Rohit Vyas
fuente
6

Fue un problema de permisos de Windows, muevo la carpeta que hereda los permisos incorrectos. Cuando me muevo a la carpeta wwwroot y agrego permiso a este usuario, comienza a funcionar bien.

Imran Rashid
fuente
1
Yo tenía el mismo problema, sólo movió los archivos de proyecto a partir desktopde wwwroot la carpeta, además, he añadido un control total de servicio de red, que se relaciona con el grupo de aplicaciones.
mihkov
3

Para mí, agregar esto en web.configel problema resuelto

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>
ihebiheb
fuente
2

Mi hora de dolor se debió a la definición de tipos MIME en web.config. Necesitaba esto para el servidor de desarrollo, pero IIS local lo odiaba porque duplicaba los tipos MIME ... una vez que los eliminé de la web, configuré el problema con js, css y las imágenes que no se cargaban desaparecieron.

peroija
fuente
¡Es difícil de creer que pueden ser tipos MIME duplicados! Recorrí durante al menos una hora probando diferentes permisos de usuario, etc., etc. pero terminó siendo MIME duplicados en mi web.config: - |
Aaron Hudon el
2

Este es un problema de autenticación. En mi caso, se resolvió mediante los siguientes pasos: 1- Vaya al administrador de IIS, en el panel izquierdo, expanda la raíz del servidor y seleccione su aplicación web desde el nodo Sitios. 2- En la pantalla de inicio, vaya a la sección IIS y seleccione Autenticación. 3- Habilitar la autenticación anónima. 4- Luego, seleccione Editar y establezca Editar credenciales de autenticación anónimas en la identidad del grupo de aplicaciones.

Credenciales de autenticación anónima

Alireza Abdollahnejad
fuente
Seguí los mismos pasos y el problema se resolvió. Gracias Alireza
Arvind Gautam
1

En mi caso,

IIS puede cargar todo con localhost, pero no pudo cargar mis archivos de plantilla app.tagdesde192.168.0.123

porque la .tagextensión no estaba en la lista.

Tipos IIS MIME

Hiep
fuente
1

Para arreglar esto:

Ir al servicio de información de Internet (IIS)

Haga clic en su sitio web en el que está intentando cargar la imagen

En la sección IIS, abra el menú Autenticación y también habilite la autenticación de Windows.

Naijalivemedia
fuente
1

Una sugerencia que he encontrado útil en el pasado al desarrollar sitios en el entorno de prueba localhost al trabajar con una copia del sitio de producción. Asegúrese de comentar las etiquetas canónicas:

  <!--<base href="http://www.example.com/">//-->
yardpenalty.com
fuente
1

Si probó todas las soluciones anteriores y aún tiene problemas, considere usar el método ResolveClientUrl () de ASP.NET.

Un guión por ejemplo:

En lugar de usar

<script src="~/dist/js/app.min.js" ></script>

Usa el método

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

¡Esta fue mi solución que funcionó para un amigo al que estaba ayudando!

KeitelDOG
fuente
1

Yo tuve el mísmo problema. Para mí, se debió a que el encabezado Cache-Control se estableció en el nivel del servidor en IIS en no-cache, no-store. Entonces, para mi aplicación, tuve que agregar lo siguiente a mi web.config:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
Daniel Cox
fuente
0

Una posible causa de esto es que su aplicación espera ejecutarse en el puerto 443 (puerto SSL estándar) y el puerto 443 ya está en uso. Me he encontrado con esto varias veces con desarrolladores que intentan ejecutar nuestra aplicación mientras Skype se ejecuta en sus computadoras.

Increíblemente, Skype se ejecuta en el puerto 443. En mi opinión, este es un defecto de diseño horrible. Si ve que su aplicación intenta ejecutarse en 444 en lugar de 443, cierre Skype y el problema desaparecerá.

Robert MacGrogan
fuente
0

Añadí app.UseStaticFiles();este código en starup.cs de método Configurar, de lo que es fijo.

Y verifique su permiso en esta carpeta.

Metin Atalay
fuente
0

Para uso de imágenes

@Url.Content("~/assets/bg4.jpg")

en un estilo usa esto

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
Maximiliano Cesán
fuente
0

En mi caso, cuando ninguno de mis archivos javascript, png o css se estaban cargando, probé la mayoría de las respuestas anteriores y ninguna pareció funcionar.

Finalmente encontré " Solicitar filtros ", y en realidad tuve que agregar .js, .png, .css como un tipo de archivo habilitado / aceptado.

Una vez que hice este cambio, todos los archivos se estaban sirviendo correctamente.

Líder Merr
fuente
0

Si ve errores 403 en la consola de su navegador, verifique la configuración del paquete MVC. Los nombres de los paquetes no deben coincidir con ningún nombre de carpeta existente en su proyecto.

p.ej.

bundles.Add(new StyleBundle("~/Content/css")...

... causaría problemas para IIS si la estructura de carpetas $ (ProjectDir) \ Content \ css existe en su proyecto, ya que trata de buscar dentro de la carpeta existente el contenido del paquete que no está allí.

En su lugar, simplemente use algo como:

bundles.Add(new StyleBundle("~/Content/cssbundle")...
ShhTot
fuente
0

Este problema ocurre cuando IIS no procesa el contenido estático como sus archivos JS, CSS, Image.

Para resolver este problema, debe seguir los pasos a continuación:

Vaya a Panel de control> Active o desactive las características de Windows> Servicios de información de Internet> Servicios de la World Wide Web> Características comunes de HTTP> Contenido estático.

Asegúrese de que el contenido estático esté activado.

Bingo. Y ya terminaste. Vuelva a cargar la página y podrá ver todos los contenidos estáticos.

Aman Agarwal
fuente
0

Tuve exactamente el mismo problema, probé todas las sugerencias pero no obtuve nada. Me fastidió horas. Resultó que mi ISP bloqueó el puerto 80 por algunas razones.

Consejo: verifique su tráfico. Asegúrese de que el puerto 80 funcione tanto localmente (es decir, firewall) como externamente.

wahaha
fuente