c# - usar - CSS, imágenes, JS no se cargan en IIS
iis no muestra css (16)
Agregue esto a su web.config
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Todas mis aplicaciones funcionaban bien, pero de repente todos los sitios en IIS no están cargando CSS, imágenes, secuencias de comandos. 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 inicio de sesión.
El problema puede ser que IIS no está publicando Contenido estático, que puede configurar aquí:
Fuente: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
Fue un problema de permiso de Windows mover la carpeta que hereda los permisos incorrectos. Cuando me muevo a la carpeta wwwroot y agrego permiso a su usuario, comienza a funcionar bien.
Intente eliminar la sección staticContent de su web.config .
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
Mi hora de dolor se debió a la definición de tipos MIME en el web.config. Necesitaba esto para el servidor de desarrollo, pero IIS local lo odiaba porque duplicaba los tipos MIME ... una vez que los quité de la web. Configuré el problema con js, css e imágenes que no se descargaban.
Para arreglar esto:
Ir al servicio de información de Internet (IIS)
Haga clic en su sitio web donde está intentando cargar la imagen
En la sección IIS, abra el menú Autenticación y habilite Autenticación de Windows también.
Para mí, agregar esto en web.config
resolvió el problema
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
Probablemente tenga la autenticación de Windows habilitada 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 le trata como un usuario anónimo (la configuración de IE puede controlar esto, pero no modifique esto a menos que realmente sepa lo que está haciendo).
Esto causa lo siguiente:
- Debes iniciar sesión explícitamente.
- Los recursos como scripts y CSS no se sirven en la página de inicio de sesión porque no está autenticado.
Esto no está roto, solo funciona según lo previsto, pero para "arreglarlo" esto:
- Cambie el tipo de autenticación en el web.config si no desea iniciar sesión.
- Y / o agregue un web.config en el directorio (s) que contiene CSS, imágenes, scripts, etc. que especifica las reglas de autorización.
Puede que esto no responda tu pregunta, pero me he estado golpeando la 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 no se instaló el rol de "Contenido estático" en IIS 7.5.
Si probó todas las soluciones anteriores y todavía tiene problemas, considere usar el método ResolveClientUrl () de ASP.NET.
Un script para 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!
Tuve el mismo problema, una página no autenticada no cargaría CSS, JS e Imágenes cuando instalé mi aplicación web en ASP.Net 4.5 en IIS 8.5 en Windows Server 2012 R2.
- Tenía el rol de contenido estático instalado
- Mi aplicación web estaba en la carpeta wwwroot de IIS y todos los permisos de la carpeta de Windows estaban intactos (los predeterminados, incluido IIS_IUSRS)
- Agregué la autorización para todas las carpetas que contenían CSS, JS e imágenes.
- Tenía la carpeta de la aplicación web en un recurso compartido de Windows, así que eliminé el uso compartido según lo sugerido por @ imran-rashid
Sin embargo, nada parecía resolver el problema. Entonces, finalmente traté de establecer la identidad del usuario anónimo para la Identidad del conjunto de aplicaciones y comenzó a funcionar.
Me golpeé la cabeza por unas horas y espero que esta respuesta salve la agonía de mis compañeros desarrolladores.
Realmente me gustaría saber por qué esto está funcionando. ¿Alguna idea?
Tuve un error similar, mi consola se veía así:
Mi problema era que estaba ejecutando mi sitio en una subcarpeta, ya que la empresa usaba un dominio superior y ningún subdominio. Me gusta esto:
host.com/app1
host.com/app2
Mi código se veía así por 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/
).
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 los desarrolladores tratando de ejecutar nuestra aplicación mientras Skype se ejecuta en sus computadoras.
Increíblemente, Skype se ejecuta en el puerto 443. Este es un error de diseño horrible en mi opinión. Si ve que su aplicación intenta ejecutarse en 444 en lugar de 443, cierre Skype y el problema desaparecerá.
Una sugerencia que encontré útil en el pasado cuando desarrollé sitios en el entorno de prueba localhost cuando trabajo con una copia del sitio de producción. Asegúrese de comentar las etiquetas canónicas:
<!--<base href="http://www.example.com/">//-->
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>