CSS, imagens, JS não carregando no IIS

126

Todos os meus aplicativos estavam funcionando bem, mas de repente todos os sites no IIS não carregavam css, imagens, scripts. Ele redireciona para a página de login.

Se eu entrar ele funciona bem. por exemplo, mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Na minha máquina local, funciona bem sem login.

Imran Rashid
fonte
marcação errada, a pergunta não é real ...
Renatas M.
3
Reversão para a versão marcada, porque acho que sei o que está causando esse comportamento e as tags são relevantes. Caso contrário, vou votar para fechar.
Tim Medora
Não é problema com esta configuração da web, eu tentei todas as respostas. Eu acho que é problema com IIS, porque todos os sites estava funcionando bem antes de eu implantar um aplicativo que efetuar todos no iis
Imran Rashid
@ImranRashid - este site está herdando configurações de outro site no IIS?
Tim Medora
@ Tim Medora - Não, senhor, não está herdando de outro site.
Imran Rashid

Respostas:

185

O problema pode ser que o IIS não esteja servindo Conteúdo Estático, que você pode configurar aqui: insira a descrição da imagem aqui

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

Windows 10:

versão do Windows 10 da caixa de diálogo acima

Matt Kocaj
fonte
2
Eu tive um problema semelhante, percebi que era um problema de instalação, mas a ativação do conteúdo estático parece ter corrigido!
ife labolz
5
Isso salvou meu bacon, você acha que isso foi ativado por padrão, mas no Windows 10 não é.
Justin
3
Lame isso não é verificado por padrão.
RayLoveless
3
@RayLoveless Acho que o que é ruim é que o MVC tem uma forte dependência desse recurso do IIS que está sendo ativado para que o conteúdo estático funcione no MVC. Eu acho que eles não deveriam ser tão acoplados. Talvez o .NET Core conserte isso. : p
Matt Kocaj 29/07
2
E aqui estamos novamente, sendo salvos pela mesma resposta, 2 anos depois da última vez.
Eric Wu
176

Eu tive o mesmo problema, uma página não autenticada não carregaria o CSS, JS e imagens quando eu instalei meu aplicativo Web no ASP.Net 4.5 no IIS 8.5 no Windows Server 2012 R2.

  1. Eu tinha a função de conteúdo estático instalada
  2. Meu aplicativo Web estava na pasta wwwroot do IIS e todas as permissões da pasta Windows estavam intactas (as padrão, incluindo IIS_IUSRS)
  3. Eu adicionei autorização para todas as pastas que continham CSS, JS e imagens.
  4. Como eu tinha a pasta do aplicativo da Web em um compartilhamento do Windows, removi o compartilhamento conforme sugerido por @ imran-rashid

No entanto, nada parecia resolver o problema. Finalmente, tentei definir a identidade do usuário anônimo como Identidade do pool de aplicativos e ele começou a funcionar.

Clique no recurso de autenticação Edite a autenticação anônima Alterar para identidade do pool de aplicativos

Eu bati minha cabeça por algumas horas e espero que essa resposta salve a agonia para meus colegas desenvolvedores.

Eu realmente gostaria de saber por que isso está funcionando. Alguma ideia?

Moiz Tankiwala
fonte
1
Isso também funcionou para mim. Eu acredito que isso ocorre porque o "usuário específico" não tinha permissões para o local da pasta, onde a identidade do pool de aplicativos possui.
Dcinadr 5/05
4
Algumas horas ? Ele me tooks mais de 4. Graças a Deus que me ajudou :)
Tito
3
Recebi esse problema de repente, depois de compartilhar a pasta wwwroot. Sua solução a corrigiu. Obrigado por reservar um tempo para adicioná-lo e pelos detalhes.
Resource
1
LENDA! Muito obrigado #
David
1
Esta é a segunda vez que tive que procurar sua postagem, porque ela me salvou duas vezes agora. Eu votaria em você 100x se pudesse. Estava usando o Umbraco - configurei meu IIS local usando Documents \ Visual Studio 2013 \ Projects - adicionado CPUName\IIS_IUSRSe ainda não carregava. Obrigado novamente!
Rob Scott
18

Eu tive um erro semelhante, meu console ficou assim:

erro

Meu problema era que eu estava executando meu site em uma subpasta, pois a empresa estava usando um domínio superior e nenhum subdomínio. Como isso:

host.com/app1

host.com/app2

Meu código era assim, incluindo scripts que funcionavam bem no host local, mas não no app1 ou app2:

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

Adicionado um sinal til ~ao src e tudo funcionou:

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

Explicação de ~vs /:

  • / - Raiz do site
  • ~/ - Diretório raiz do aplicativo

/retornará a raiz do site ( http://host.com/),

~/retornará a raiz do aplicativo ( http://host.com/app1/).

Ogglas
fonte
1
up vote. Eu estava tendo esse problema, o aplicativo não carregava nada no palco, mas carregava na produção. Eu também uso @ Url.Content () com ~ /. Não testado em produção, mas acho que vou obras
Kross
17

Tente remover a seção staticContent do seu web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
intrepidis
fonte
Remover staticContent funciona, mas agora todas as minhas fontes são 404?
Rajesh Sivasankaran
Não sou especialista nisso, mas talvez você precise adicionar as declarações de tipo MIME corretas para suas fontes via Gerenciador do IIS na guia Cabeçalhos HTTP das propriedades do site.
Intrepidis
1
Isso resolveu o problema para mim, porque eu tenho algumas entradas do arquivo .woff lá em desenvolvimento, mas na produção de mesma configuração precisa de ajuste
guideX
Obrigado intrepidis, no meu caso, sua sugestão funcionou para mim. Felicidades!
user752746
15

Isso pode não responder à sua pergunta, mas eu estou batendo na cabeça com os mesmos sintomas com uma nova instalação do IIS. CSS, JS e imagens não estavam aparecendo. Era devido à função "Artigo Estático" não estar instalada no IIS 7.5.

user23462
fonte
Você pode ter um problema diferente e meu problema foi quando mudo o diretório do inetpub para remover permissões quando eu reverto meu problema foi corrigido.
Imran Rashid
7

Você provavelmente tem a autenticação do Windows ativada no seu web.config. Em uma máquina local, suas credenciais do Windows são passadas automaticamente e funcionam. Em um site ativo, você é tratado como um usuário anônimo (a configuração do IE pode controlar isso, mas não a modifique, a menos que você realmente saiba o que está fazendo).

Isso causa o seguinte:

  • Você precisa fazer login explicitamente.
  • Recursos como scripts e CSS não são exibidos na página de login porque você não está autenticado.

Isso não está quebrado, apenas funcionando como pretendido, mas para "consertar" isso:

  • Altere o tipo de autenticação no web.config se você não quiser nenhum logon.
  • E / ou adicione um web.config no (s) diretório (s) que contém CSS, imagens, scripts etc. que especifica regras de autorização.
Tim Medora
fonte
o modo de autenticação é janela Forms não? o arquivo de configuração da Web de substituição substitui a configuração da máquina? Existe alguma configuração no IIS que esteja causando isso?
Imran Rashid
A autenticação de formulários também acionará um prompt de login e impedirá que recursos como scripts e imagens sejam veiculados. Veja as outras respostas para as alterações específicas que você precisa fazer no web.config. Salvar as configurações no IIS modificará a configuração da web.
Tim Medora
Eu mesmo resolvo. O problema surge quando eu compartilho a pasta wwwroot na minha rede. Muda a permissão do diretório. Quando eu desarquivo e defino a permissão como padrão. Resolvido :) Obrigado Tim
Imran Rashid
6

Adicione isso ao seu web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Mathias F
fonte
O caminho é relativo; às vezes, adicionar a raiz resolverá isso. Tente definir o caminho para"~/Images"
StuperUser
6

Use isso na seção de configuração do seu arquivo 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
fonte
6

Foi problema de permissão do Windows eu movo a pasta que herda permissões erradas. Quando mudo para a pasta wwwroot e adiciono permissão ao usuário iis, ele começa a funcionar bem.

Imran Rashid
fonte
1
Eu tive o mesmo problema. Acabei de mover os arquivos do projeto de desktoppara a wwwroot pasta. Além disso, adicionei controle total ao serviço de rede, relacionado ao pool de aplicativos.
mihkov
3

Para mim adicionando isso no web.configresolvido o problema

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

Minha hora de dor foi devido à definição de tipos MIME no web.config. Eu precisava disso para o servidor de desenvolvimento, mas o IIS local o odiava porque duplicava os tipos MIME ... depois que os removi da web.config, o problema com js, css e as imagens que não estavam carregando desapareceu.

peroija
fonte
Difícil de acreditar que pode ser duplicado tipos MIME! Procurei pelo menos uma hora tentando permissões de usuário diferentes, etc etc, mas acabou sendo MIMEs duplicadas no meu web.config: - |
Aaron Hudon
2

Este é um problema de autenticação. No meu caso, ele foi resolvido pelas etapas abaixo: 1- Vá para o gerenciador do IIS, no painel esquerdo, expanda a raiz do servidor e selecione seu aplicativo Web no nó Sites. 2- Na tela inicial, vá para a seção IIS e selecione Autenticação. 3- Habilite a autenticação anônima. 4- Em seguida, selecione Editar e defina Editar credenciais de autenticação anônima como identidade do pool de aplicativos.

Credenciais de autenticação anônima

Alireza Abdollahnejad
fonte
Segui as mesmas etapas e o problema foi resolvido. Obrigado Alireza.
Arvind Gautam
1

No meu caso,

O IIS pode carregar tudo com localhost, mas não foi possível carregar meus arquivos de modeloapp.tag de de192.168.0.123

porque a .tagextensão não estava na lista.

Tipos MIME do IIS

Hiep
fonte
1

Para corrigir isso:

Vá para o Serviço de Informações da Internet (IIS)

Clique no seu site em que você está tentando carregar uma imagem

Na seção IIS, abra o menu Autenticação e ative a autenticação do Windows também.

Naijalivemedia
fonte
1

Uma sugestão que achei útil no passado ao desenvolver sites no ambiente de teste localhost ao trabalhar com uma cópia do site de produção. Certifique-se de comentar as tags canônicas:

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

Se você tentou todas as soluções acima e ainda tem problemas, considere usar o método ResolveClientUrl () do ASP.NET.

Um script para o exemplo:

Ao invés de usar

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

Use o método

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

Esta foi a minha solução que funcionou para um amigo que eu estava ajudando!

KeitelDOG
fonte
1

Eu tenho esse mesmo problema. Para mim, foi devido ao cabeçalho de controle de cache que estava sendo definido no nível do servidor no IIS como sem cache, sem armazenamento. Então, para o meu aplicativo, eu adicionei o seguinte ao meu web.config:

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

Uma causa possível disso é que seu aplicativo espera executar na porta 443 (porta SSL padrão) e a porta 443 já está em uso. Eu já deparei com isso várias vezes com desenvolvedores tentando executar nosso aplicativo enquanto o Skype está sendo executado em seus computadores.

Incrivelmente, o Skype é executado na porta 443. Essa é uma falha de design horrível na minha opinião. Se você vir seu aplicativo tentando executar o 444 em vez do 443, desligue o Skype e o problema desaparecerá.

Robert MacGrogan
fonte
0

Eu adicionei app.UseStaticFiles(); esse código em starup.cs do método Configure, que é corrigido.

E verifique sua permissão nesta pasta.

Metin Atalay
fonte
0

Para imagens, use

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

em um estilo, use este

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

No meu caso, quando nenhum dos meus arquivos javascript, png ou css estava sendo carregado, tentei a maioria das respostas acima e nenhuma parecia funcionar.

Finalmente encontrei " Filtros de solicitação " e, na verdade, tive que adicionar .js, .png, .css como um tipo de arquivo ativado / aceito.

Depois que eu fiz essa alteração, todos os arquivos estavam sendo servidos corretamente.

Merr Leader
fonte
0

Se você encontrar erros 403 no console do navegador, verifique o MVC Bundle Config. Os nomes de pacote não devem corresponder a nenhum nome de pasta existente no seu projeto.

por exemplo.

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

... causaria problemas no IIS se a estrutura de pastas $ (ProjectDir) \ Content \ css existir no seu projeto, pois ele tenta procurar na pasta existente o conteúdo do pacote configurável que não existe.

Em vez disso, basta usar algo como:

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

Esse problema ocorre quando o IIS não processa o conteúdo estático, como arquivos JS, CSS, imagem.

Para resolver esse problema, siga as etapas abaixo:

Vá para Painel de controle> Ativar ou desativar recursos do Windows> Serviços de Informações da Internet> Serviços da World Wide Web> Recursos HTTP comuns> Conteúdo estático.

Verifique se o conteúdo estático está ativado.

Bingo. E você terminou. Recarregue a página com força e você poderá ver todo o conteúdo estático.

Aman Agarwal
fonte
0

Eu tive exatamente o mesmo problema, tentei todas as sugestões, mas não obtive nada. Me incomodou horas. Acabou que meu ISP bloqueou a porta 80 por alguns motivos.

Conselho: verifique seu tráfego. Verifique se a porta 80 funciona localmente (por exemplo, firewall) e externamente.

wahaha
fonte