Script não servido pelo manipulador de arquivo estático no IIS7.5

130

Acabei de tentar implantar meu primeiro aplicativo Web no IIS no meu notebook Windows 7 Home Premium. Depois de criar o aplicativo, tive que mudar para o Pool de aplicativos clássico e, em seguida, definir esse pool para o framework 4.0. Agora eu recebo o seguinte erro:

Erro HTTP 404.17 - Não encontrado O conteúdo solicitado parece ser um script e não será exibido pelo manipulador de arquivo estático.

O URL solicitado é http: // localhost: 80 / pvmms / default.aspx

Receio que o Google pesquisador extenso não tenha produzido nada claro ou definido o suficiente para eu trabalhar e, como sempre, me voltei aos especialistas.

Edição: Eu suspeito que isso ocorre porque não há mapeamentos de manipulador de estrutura 4.0 para arquivos .aspx. No entanto, aspnet_regiis ainda dá o dedo ao meu usuário administrador e diz que preciso de direitos de administrador para executá-lo.

EDIT # 2: registrei todos os frameworks (2 e 4, 32 e 64) e agora tudo funciona. Encontrei isso adicionando manualmente um mapa de scripts para .aspxaspnet_isapi e voila. Não entendo por que a instalação da estrutura não faz isso, a menos que minha memória falhe e eu só ativei o IIS após a instalação do VS.

ProfK
fonte
Alternativamente fazê-lo em web.config como explicado aqui stackoverflow.com/questions/2061678/...
bizl

Respostas:

120

Talvez seja tarde demais agora, mas na maioria das vezes você precisa executar

aspnet_regiis.exe -i  

depois de instalar o asp.net. Talvez eu faça isso de qualquer maneira agora.

Remy
fonte
17
Existem duas ferramentas de registro do IIS que acompanham o .NET Framework; um para sistemas padrão e outro para sistemas de 64 bits. A ferramenta para sistemas de 64 bits está localizada no diretório Framework64 do diretório Microsoft.NET dentro da pasta Windows; por exemplo C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 conteria a ferramenta de registro do IIS.
Matthew Lock
3
Se você obter o erro the command is not recognized as an internal or external command. Execute-o no prompt de comando do desenvolvedor.
rockXrock
1
Eu tive que fazer isso para o framework 2.0 na pasta Framework64. como o que @matthew Bloqueio disse
codingNightmares
Além disso, se você precisar executar o 2.0 e o 4.0, execute o 2.0 primeiro.
SouthShoreAK
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (para v2.0 em x64) - altere o Framework64 para Framework para x86, altere v2. * Para v4. * Para v4 (navegue para a pasta pai pelo nome exato)
JohnLBevan
63

Além do acima, se você precisar de suporte ao WCF, pode ser necessário executar o seguinte:

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

Substitua a versão 3.0 para qualquer que seja sua versão atual da estrutura.

Adi
fonte
1
Nota para os outros, acho que em webapps que usam 4.0 aplicativo piscina, você vai precisar para executar aspnet_regiis novamente
Tim Gabrhel
1
Para .Net 4 está no diretório pai. Por exemplo: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev
57

Encontrei esse erro do IIS 8.5 ao tentar acessar um serviço WCF que eu havia escrito. Acontece que o servidor não tinha os recursos de Ativação HTTP do WCF ativados. Marquei as caixas e clicou no assistente iisreset e começou a trabalhar.

Painel de Recursos do Windows

JTR
fonte
1
Isso funcionou para mim com o IIS 8.5 e o Windows 8.1. Eu precisava habilitar um ASHX obtendo o erro descrito na pergunta (HTTP 404.17)
Sergio A.
OBRIGADO! Isso funcionou para mim. No entanto, no meu caso eu tive que ligar para .NET 2.0 desde que eu estou usando o serviço Web de idade
Stefan Vasiljevic
Este é um post antigo, mas sua solução salvou meu bacon. Eu não teria encontrado isso em um milhão de anos ... em qualquer outro lugar. Obrigado.
21418 Joe Schmucker #
48

Se você estiver usando o iis 7.5.

Basta ir ao Gerenciador do IIS, abrir as propriedades do site.

Você verá a seção 'Mapeamentos de manipulador' lá, basta ir para essa seção e procurar por 'staticFile'.

Provavelmente é o último arquivo da lista.

Em seguida, clique com o botão direito do mouse e selecione 'Reverter para pai'.

Eu perdi tantas horas enquanto enfrentei essa primeira vez, mas isso resolverá seu problema.

Kumar
fonte
2
Como respondido por Adi: esse comando faz exatamente tudo isso: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC
Obrigado @Kumar pela dica! IIS> Sites> acme.com> Mapeamentos de manipulador> Reverter para pai. No meu caso, eu fiz isso para todo o domínio e não apenas "staticFile". Isso funcionou para mim e foi mais simples / preferível do que executar um executável (aspnet_regiis.exe). Por que essa sugestão não está borbulhando ainda mais? =)
jiminy
Dica brilhante ... mas de onde diabos veio esse showstopper? Não me lembro de ter encontrado isso nas versões anteriores do IIS ...!
Mike Gledhill
25

Eu tive esse problema no Windows Server 2012 com o ASP .NET 4.5, você não pode usar aspnet_regiis.exe e só precisa instalar o ASP .NET 4.5 através do Assistente para Adicionar Funções e Recursos:

insira a descrição da imagem aqui

Você pode encontrar o item de menu "Adicionar funções e recursos" no menu "Gerenciar", no canto direito do Gerenciador do servidor

C. Augusto Proiete
fonte
1
O item de menu "Adicionar funções e recursos" pode ser encontrado no menu "Gerenciar" no canto direito do Gerenciador de servidores
Alexander Trofimov
16

texto alternativo

deve verificar esta opção suponho

Jsinh
fonte
1
Isso apenas define se o conteúdo estático pode ser veiculado ou não. Meu problema é que as solicitações de script estão sendo mapeadas para conteúdo estático. Se eu desativá-lo, o IIS nem tenta servidor da página, apenas me dando um espaço em branco.
ProfK
16

Eu resolvi esse problema ativando WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

Mas você tem que admitir que essa configuração INTEIRA do IIS configura / adivinha / experimenta e vê / experimenta / experimenta que passa 4 ou 5 dos nossos dias tentando encontrar uma solução em torno da abordagem.

Certamente, o 'IIS' é o maior truque de confiança já reproduzido no mundo até hoje

Richard
fonte
1
Tudo o que você precisa é habilitar o recurso de conteúdo estático para o IIS. Isso não tem nada a ver com o WCF.
ProfK
1
O @ProfK depende do motivo pelo qual você está recebendo esse erro, causas diferentes resultam no mesmo erro - se você estiver recebendo o erro com um arquivo SVC configurado para usar o WCF, a correção acima será corrigida.
precisa saber é o seguinte
LOL concorda totalmente, portando vários sites e acabou de ver 5 tipos diferentes de erros, todos sem mensagem de erro real ou muito enigmática. Exemplo "A página não pode ser exibida porque ocorreu um erro interno no servidor" significa que você adicionou um tipo MIME de conteúdo estático que já existe.
microfone Nelson
15

Sei que essa é uma pergunta antiga, mas acabei de fazer isso com um aplicativo 3.5 na minha máquina Windows 8 reconstruída e ainda estava recebendo isso depois, aspnet_regiis -irue o ASP.NET 3.5 não estava marcado nos Recursos de Desenvolvimento de Aplicativos (reputação insuficiente para postar uma imagem).

bicbmx
fonte
2
@bicbmx para a imagem, você pode compartilhar um link após o carregamento que em algum lugar, por exemplo, em imgur.com
superjos
12

Há uma chance de que o pool de aplicativos criado para o seu aplicativo por padrão seja a versão 2. Portanto, embora você veja um manipulador para a extensão .svc na lista, ele não funciona e o trata como arquivo estático. Tudo o que você precisa é abrir as propriedades do pool de aplicativos e alterá-lo para a versão 4.

Konstantin Salavatov
fonte
8

Registre o asp.net novamente .... resolverá o problema.
insira a descrição da imagem aqui

Vá para o prompt de comando do Visual Studio
e registre asp.net como windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i

Sunil
fonte
2
aspnet_regiis.exe -i responde com "Esta opção não é suportada nesta versão do sistema operacional". Por que o IIS é tão chato?
Paul McCarthy
5

Eu tive esse mesmo problema em uma máquina Windows 8 que estou configurando. Eu tinha instalado o vs2012 antes do vs2010, que instala o .NET framework 4.5. Eu tenho meus pools de aplicativos em execução no 4.0. Verifiquei se o aspnet estava registrado na 4.0 usando aspnet_regiis -i. Isso ainda não funcionou. Então eu abri os Recursos do Windows e notei que o 4.5 adicionou um conjunto chamado ".NET Framework 4.5 Advanced Services". Ativei o nó Serviço WCF e seus filhos e, em seguida, meu ponto de extremidade svc funcionou corretamente. Espero que isso ajude as pessoas que estão migrando para o Windows 8.

IceNine
fonte
Server 2012, IIS8 aqui também, obrigado pelo ponteiro que você me fez seguir na direção certa. Para os interessados, exigi ativar a função de servidor de aplicativos e a função de servidor da Web. Eu encontrei a informação que eu precisava aqui: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John
3

Eu me deparei com essa pergunta quando me deparei com o mesmo problema. A causa raiz do meu problema foi um pool de aplicativos configurado incorretamente. Foi definido para o 2.0 inadvertidamente, quando precisava ser definido para 4.0. A resposta no seguinte link me ajudou a descobrir esse problema: http://forums.iis.net/t/1160143.aspx

Garrison Neely
fonte
2

Eu tive o mesmo problema. Quando adicionei o conteúdo estático ao IIS, ele funciona bem.

jasharbn
fonte
2

Apenas outra solução possível que encontrei com a mesma mensagem de erro.

Ao tentar configurar um aplicativo Web .NET 4.0 para um novo pool de aplicativos, recebi esse erro estranho informando que estava tentando processar meu arquivo aspx com o manipulador de arquivo estático, o que não fazia sentido.

Por algum motivo, o ISAPI for .NET 4.0 foi definido como desabilitado na área Restrições ISAPI e CGI do nível do servidor no gerenciador do IIS. Configurá-lo como ativado era tudo o que era necessário , no entanto, o gerenciador do IIS 7.5 é tão complicado e difícil de seguir que demorei muito tempo para descobrir isso.

Estou supondo que, como era um Aplicativo 4.0 que não podia ser processado pelo Mecanismo 4.0, o manipulador de arquivos estático estava sendo usado por padrão.

DarrenMB
fonte
2

Para outras pessoas lendo isso:

Isso pode acontecer se a versão .Net que você registrou não for a selecionada nas 'Configurações básicas' do pool de aplicativos anexado ao seu site. Por exemplo, o pool de aplicativos de sites tem o .Net v2.0 selecionado, mas você registrou a v4.0

b15
fonte
2

No Windows 10 / Framework 4.7, tive que ativar a ativação HTTP através do seguinte método:

  1. Painel de controle> Programas e Recursos> Ativar ou desativar recursos do Windows
  2. Em Serviços Avançados do .NET Framework 4.7, expanda Serviços WCF, selecione para verificar a Ativação HTTP e o que mais você precisar ao trabalhar com o WCF
  3. Clique em OK e deixe a instalação funcionar, abra um prompt de comando administrativo e emita o comando IISRESET
Will Buffington
fonte
1

cmd -> clique com o botão direito -> Executar como administrador

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i

Safaa Elgendi
fonte
0

Usando o gerenciador do IIS, descobri que os arquivos .aspx foram mapeados (em "Mapeamentos de manipulador") para o ISAPI 2.0 - mesmo que o ASP.NET 4.5 tivesse sido instalado anteriormente. A edição deles para apontar (também) para um executável do ISAPI 4.0 de 64 bits corrigiu o problema.

O executável foi encontrado em% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

Matthew Diggins
fonte
0

recebi esta mensagem para um aplicativo no iis 7.5 com um pool de aplicativos clássico atribuído ao .net 2.0. eu precisava ir para o Handler Mappings e adicionar dois mapas de script, ambos iguais, exceto pelo nome. um nome era svc-ISAPI-2.0-64, o outro era svc-ISAPI-2.0. O caminho da solicitação foi .svc. E o executável era% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. eu reiniciei o iis e tudo estava feliz

Robert
fonte
0

Um dos piores cenários que acabei de solucionar é - ter uma entrada conflitante no Web.config.

Na minha máquina local, eu não tinha a extensão .woff registrada no IIS, então a adicionei usando o Web.config. Porém, no servidor de produção .woff, o tipo mime foi registrado. Isso causou conflito no nível do aplicativo.

O engraçado é que não há erro registrado para isso. Apenas um trabalho de adivinhação (primeira vez, é claro).

Então, para mim, a solução foi apenas remover e / ou elementos do web.config.

Ashish
fonte
0

Eu tive o mesmo problema, apenas alterei a versão da estrutura de destino no site para a versão em que ele é desenvolvido, o mesmo no IIS. Isso resolveu meu problema. Espero que isto ajude...

Obrigado

Arjun
fonte
0

pode ser por várias razões, no meu caso em Pool de aplicativos -> configuração avançada -> Habilitar aplicativo de 32 bits (deve ser verdadeiro). Foi definido como falso antes.

madhur
fonte
-1

Navegue até o seu diretório de arquitetura .Net e CPU usando CMD ou PowerShell

Digite este comando: aspnet_regiis –r

jose vega
fonte
No Windows Server 2008 R2, diz: "Esta opção não é suportada no Windows Vista."
CSharper
Não há uma opção chamada -r
NishantMittal