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

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:


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"


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).

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.


1

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


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.


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.


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.


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. :)


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.


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


0

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


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.