O IIS 7.5 não carrega páginas html estáticas

10

Há um IIS 7.5 instalado recentemente em um servidor dedicado. Aplicativo Web ASP.NET 4.0 copiado para sua pasta, novo site é criado em seu próprio IP na publicação 80, contas IIS_IUSR e IUSR têm direitos de leitura / execução na pasta do site, o site é atribuído ao seu próprio pool de aplicativos integrado com 4.0 .NET (Eu tentei o pool clássico com os mesmos resultados).

O problema: quando tento acessar este site, o navegador carrega apenas o conteúdo gerado pelos recursos do .NET, como páginas aspx, arquivos .axd, etc. Imagens estáticas, arquivos estáticos js, css e html estão na origem da página, mas o IIS não servi-los. As ferramentas de desenvolvimento em todos os navegadores reclamam que todos esses recursos estáticos foram enviados pelo servidor com um tipo de conteúdo errado (texto simples em vez de imagem, estilos, etc.). O que eu faço de errado?

Kizz
fonte
O que você vê no Fiddler (ou Firebug)?
SLaks
Se isso for possível, execute a página no servidor, execute somente o conteúdo estático no servidor e você receberá um relatório de erro totalmente detalhado.
Aristos
Eu não uso o Firebug. Mas o Chrome, por exemplo, reclama "Recurso interpretado como imagem, mas transferido com o texto MIME / texto simples" sobre um arquivo jpg na página. O mesmo para todos os estilos, js e páginas estáticas de html. Além disso, cargas dinâmicas de scripts e html não funcionam.
@ Aristos: eu fiz isso. O navegador do servidor renderiza a página da mesma maneira que os navegadores externos. Sem erros, apenas página incompleta.
O usuário que está executando o servidor da Web tem o direito de ler esses arquivos?
Luc M

Respostas:

12

O IIS 7 / 7.5 possui um novo "recurso" - Serviços de Função. A postagem do rsbarro me lembrou que existe um serviço de função responsável pelo conteúdo estático. É servidor da Web / recursos comuns de HTTP / conteúdo estático. Verifique se o ícone Tipos MIME está presente no Gerenciador do IIS, como sugerido pelo rsbarro.

Você precisa instalar o serviço de função Static Content, se não o fizer. Para fazer isso, selecione o:

  • Gerenciador do Servidor
  • Funções
  • Nó Servidor Web (IIS) no painel esquerdo
  • role para a janela Serviços de Função
  • veja se o serviço de função Static Content está instalado.

Pelo que você descreve, esse parece ser o seu problema.

Em geral, se o IIS7 não fizer algo que o IIS6 fez, a primeira coisa a verificar é verificar se o serviço de função correspondente está instalado. Espero que isto ajude.

Vlad
fonte
Função de conteúdo estático, como eu senti falta disso? Obrigado, corrigiu o problema perfeitamente.
David Thomas Garcia
6

No IIS, acesse seu site e verifique a seção Tipos MIME (veja a imagem abaixo). Verifique se você vê entradas nessa lista para .js, .css, .html etc., e se elas têm o tipo MIME adequado especificado. O IIS 7.5 servirá apenas páginas se houver um tipo MIME especificado. Por padrão, os tipos MIME para essas extensões são configurados no applicationHost.configarquivo localizado na C:\Windows\system32\inetsrv\configpasta (pode ser necessário executar o bloco de notas como administrador para exibir o arquivo). Basta procurar .js e você deve encontrar uma entrada abaixo <mimeMap>no <staticContent>elemento

iis tipos mime

Essas configurações podem ser substituídas no seu web.configarquivo. Se estiverem, aparecerão no seguinte local no web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Eu definitivamente começaria verificando lá. Se tudo parecer ok na seção Tipos de MIME, é possível que você tenha um módulo que esteja interferindo nas solicitações de arquivos estáticos (mas provavelmente apenas se você tiver <modules runAllManagedModulesForAllRequests="true" />definido na sua <system.webServer>seção). Se esse for o caso, eu removeria todos os módulos configurados no seu web.confige verificaria se você pode exibir os arquivos estáticos e depois os leria um de cada vez para ver qual módulo está causando o problema. Se você não conseguir descobrir, sugiro postar o conteúdo das suas web.config(ou pelo menos as seções system.webe system.webServer) na pergunta.

rsbarro
fonte
2

Eu tive o mesmo problema, mas meu pool de aplicativos estava em execução em uma conta de domínio e esse usuário tinha direitos na pasta do site. Meu site renderizou aspx, mas nenhum conteúdo estático. O que resolveu meu problema foi adicionar o grupo IIS_IUSRS à diretiva de segurança local denominada "representar um cliente após a autenticação". O grupo IIS_IUSRS tinha minha conta de domínio. Estou executando o servidor iis 7.5 windows 2008.

parttimeadjunct
fonte
Gostaria de poder votar mais de uma vez. Eu vim a essa pergunta enquanto procurava por que meus arquivos .css não estavam sendo atendidos pelo IIS. Estava relacionado às permissões do Windows nas pastas em que estavam armazenadas.
2777-445-4c77-b1eb-4df3e5