HTTP 404 ao acessar o arquivo .svc no IIS

86

Recentemente, criei um serviço WCF que funciona bem quando testado no Visual Studio 2008. mas quando implanto o projeto no IIS e tento acessar o arquivo .svc do IIS, recebo este erro:

"Server Error in '/' Application.The resource cannot be found.  "

Tenho tido esse problema nos últimos 4 dias.

nos Mapeamentos de manipulador do Gerenciador do IIS, posso ver duas entradas para .svc:

svc-Integrated and svc-ISAPI-2.0
Attilah
fonte

Respostas:

75

Você precisa adicionar um mapeamento para a extensão SVC ao ASP.NET. A maneira mais fácil de fazer isso é executar ServiceModelReg.exe -iem C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Também pode ser necessário habilitar o ASP.NET, caso ainda não o tenha feito.


Se você estiver usando o Windows Server 2012 ou 2016, siga estas instruções:

Tvanfosson
fonte
Você tentou reiniciar o IIS depois?
tvanfosson,
Agora você tem um mapeamento mime para .svc?
tvanfosson,
Não é mapeamento mime - mapeamento de extensão de aplicativo. consulte msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim
22
Importante: não faça isso no Server 2012 com .NET 4.5 instalado. Isso me ferrou até então executar ServiceModelReg.exe -ua. Veja aqui a solução Server 2012: stackoverflow.com/questions/11116134/…
Scott Anderson
109

O que funcionou para mim, no Windows 2012 Server R2:

WCF HTTP 404

Os agradecimentos vão para "Aaron D"

Stefan Michev
fonte
3
De longe a opção mais fácil.
BIDeveloper
Isso funcionou para mim em desktops Win10, Win8.1 e servidor Win2012 :) Obrigado!
Skipper de
Isso funcionou para mim em desktops Win10, Win8.1 e servidor Win2012 :) Obrigado!
Skipper de
2
Por alguma razão, eu tive que instalar o recurso para 3.5, bem como para 4.5, e via linha de comando: dism /online /enable-feature /featurename:WCF-http-Activation45 /all e também dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan
1
Também funciona no Sever 2019
Zar Shardan
56

Encontrei essas instruções em uma postagem de blog que indicava esta etapa, que funcionou para mim (Windows 8, 64 bits):

Certifique-se de que, nos recursos do Windows, você tenha ambas as opções do WCF na estrutura .Net marcadas. Portanto, vá para Painel de controle -> Programas e recursos -> Ativar / desativar recursos do Windows -> Recursos -> Adicionar recursos -> Recursos do .NET Framework XX. Certifique-se de que a estrutura .Net diga que está instalada e certifique-se de que o nó Ativação WCF abaixo dela esteja selecionado (caixa de seleção marcada) e ambas as opções em Ativação WCF também estejam marcadas.
Esses são:
* Ativação HTTP
* Ativação não HTTP
Ambas as opções precisam ser selecionadas (caixa marcada marcada).
Aaron D
fonte
2
Se eu pudesse votar a favor mais de uma vez, eu faria, isso estava me deixando louca, saúde!
Chris W.
4

Vejo que você já resolveu seu problema - mas para a posteridade:

Tivemos um problema semelhante e o manipulador SVC já estava instalado corretamente. Nosso problema era as solicitações de processamento do manipulador ExtensionlessUrl antes de chegarem ao manipulador SVC.

Para verificar isso - em Mapeamentos de manipulador no Gerenciador do IIS no nível do servidor web, visualize a lista de manipuladores em ordem (é uma opção no lado direito). Se os vários manipuladores ExtensionlessUrl aparecerem acima dos manipuladores SVC, mova-os repetidamente para baixo até que estejam na parte inferior.

Inigo Surguy
fonte
1

Verifica se seu diretório foi convertido em um aplicativo em seu IIS.

esylvestre
fonte
1

Eu tive o mesmo problema hoje.

Para mim, a solução foi entrar no IIS, clicar com o botão direito do mouse no novo nome do site, selecionar Propriedades, ASP.Net, e alterar a versão ASP.Net de "1.1.4322" (que havia sido definida como padrão) a 2.0.50727.

Depois de fazer isso, eu poderia clicar com o botão direito no arquivo .svc, clicar em "Procurar" e ver a página da Web do serviço amigável.

Mike Gledhill
fonte
1

Isso também pode se tornar um problema depois de habilitar a compatibilidade de gerenciamento do IIS 6 no Windows 10. A configuração da ativação HTTP da estrutura em Serviços WCF resolverá o problema.

Al Nolan
fonte
0

No meu caso, o erro foi causado por configurações de mapeamento incorretas no arquivo applicationhost.config (\ System32 \ inetsrv \ config). Por algum motivo, o Visual Studio 2013 o corrompeu ao criar um diretório virtual no IIS. A correção foi editar manualmente a seção de sites no arquivo.

user405723
fonte
0

Existem 2 versões da estrutura .net fornecidas sob os recursos em adicionar função / recursos no servidor 2012

uma. 3,5

b. 4,5

Dependendo da estrutura usada, você pode habilitar a ativação HTTP nos serviços WCF. :)

Raj kumar
fonte
0

No meu caso, o Win 10. o arquivo applicationHost.config está corrompido pelo VS 2012. E você pode obter a cópia do histórico deste arquivo em C: \ inetpub \ history. Em seguida, reinicie o IIS e ele funcionará corretamente.

Phuongdnguyen
fonte
0

Tive que adicionar a extensão .svc às extensões permitidas nas configurações de filtragem de solicitações (recebi erros 404.7 antes).

insira a descrição da imagem aqui

Martinoss
fonte
0

Adicionar o sufixo .svc conforme permitido na filtragem de solicitações funcionou para mim.

Brian King
fonte
0

Nenhuma das soluções acima resolveu esse erro para mim. Tive que definir o seguinte em web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Eu gostaria de aproveitar esta oportunidade para MALDIAR a Microsoft mais uma vez por criar uma bagunça tão grande com o .NET Framework e tornar a vida dos desenvolvedores tão miserável por tanto tempo!

Smyrnian
fonte