Erro HTTP 404.3 - Não encontrado "ao navegar no serviço wcf no Windows Server 2008 (64 bits)

88

Estou desenvolvendo um aplicativo baseado em .Net Framework 3.5 sp1 e hospedado no servidor windows 2008 (64 bits).

Ao navegar no serviço wcf (.svc) localmente, tudo está ok, mas ao navegar com o URL de domínio completo, ocorreu um erro.

o endereço local é assim: http: //localhost/MyService.svc

e o endereço de domínio é assim: http://MySite.ir/MyService.svc

a propósito, as páginas (.aspx) e outros arquivos funcionam corretamente tanto no localhost quanto com o endereço de domínio.

Qualquer ideia seria apreciada

Aqui está o erro detalhado:


Erro HTTP 404.3 - não encontrado

A página que você está solicitando não pode ser exibida devido à configuração da extensão. Se a página for um script, adicione um manipulador. Se o arquivo deve ser baixado, adicione um mapa MIME. Informação detalhada do erro

Módulo: StaticFileModule

Notificação: ExecuteRequestHandler

Manipulador: StaticFile

Código de erro: 0x80070032

URL solicitado: http://MySite.ir:80/MyService.svc

Caminho físico: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Método de logon: anônimo

Usuário de logon anônimo

Mori
fonte

Respostas:

224

Certifique-se de ter ativado os componentes WCF a partir daqui .

Ou a maneira alternativa e fácil é ir ao painel de controle -> Ativar ou desativar o recurso do Windows -> e certifique-se de ter todas as opções marcadas conforme mencionado na imagem abaixo.

insira a descrição da imagem aqui

Você pode precisar ativar cada caixa e aceitar, caso receba erros ao ativar todos os recursos de uma vez

Nirav Mehta
fonte
36
.Net Framework 4.5 Advanced Services -> Check WCF Services e -> HTTP Activation fez isso por mim!
devHead
3
Windows Server 2012 - só precisava de ativação de HTTP e compartilhamento de porta verificado.
dibs487
2
Eu acrescentaria a esta resposta para ativar as caixas uma por uma. Todas as verificações ao mesmo tempo podem falhar. Acontece no Windows Server 2012.
harveyt
2
esta resposta deve estar no topo
markthewizard1234
3
Essa é a resposta correta. Isso resolveu o problema para mim e não precisei adicionar nada manualmente aos mapeamentos de manipulador do IIS.
Anthony
25

OK, aqui está a resposta:

Vá para Mapeamentos do manipulador | Adicionar gerenciador de manipulador -> e adicionar as informações abaixo

Caminho do pedido: * .svc

Tipo: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089

Nome: svc-integrado

Mori
fonte
3
Para qualquer pessoa que queira adicionar isso ao seu arquivo web.config, isso funciona para mim em um projeto .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr
6
Para mim, adicionar a linha de @StefanMohr ao Web.config não funcionou muito bem. No entanto, eu mudei path="*.svc"e verb="*"funcionou muito bem. Assim, a linha que usei que funcionou foi: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(adicionada em configuration / system.webServer / handlers).
Aron Boyette
11

Se alguém tiver esse problema no Windows Server 2012, a resposta de Bill Moon aqui resolveu para mim:

"Para Windows Server 2012 ... No Gerenciador do Servidor, clique em Adicionar funções e recursos, selecione o servidor apropriado e selecione Recursos. Em Recursos do .NET Framework 4.5, você verá Serviços WCF e, abaixo dele, encontre a ativação HTTP. "

Vai
fonte
1
Em qualquer aplicativo da web existente, você também terá que fazer o seguinte após adicionar o recurso do Windows: - Iniciar inetmgr - Abrir "Mapeamentos de manipulador" - Verifique se os mapeamentos svc-ISAPI para a extensão * .svc estão presentes. Caso contrário, use a ação "Reverter para pai" para copiá-los do site pai. Observe que isso pressupõe que os mapeamentos de manipulador personalizados estão configurados em web.config para o aplicativo, como normalmente é o caso no IIS7 +. Caso contrário, você os perderá ao executar "Reverter para o pai".
Berend Engelbrecht
8

Tenho windows 10 no meu laptop e uso o visual studio 2015 para desenvolvimento WCF. O WCF está funcionando bem no visual studio, mas quando hospedado no IIS, obtive o mesmo erro.

Verifiquei o gerenciador do IIS. A extensão svc estava faltando. Tentei adicionar um novo manipulador no IIS, conforme sugerido por Mori na primeira resposta. Não encontrei o tipo "System.ServiceModel.Activation.HttpHandler".

Então abri "Ativar ou desativar recursos do Windows" e instalei os recursos destacados na captura de tela.

Isso funcionou para mim.

insira a descrição da imagem aqui

Anil
fonte
0

Se você estiver usando .Net 4.x, o PublicKeyToken será 31bf3856ad364e35.

No entanto, após esta postagem sobre como instalar os serviços WCF corretamente no IIS, o manipulador foi configurado para mim.

Thomas Hagström
fonte
0

Eu queria adicionar isso como um comentário à resposta, mas não tinha representantes suficientes para isso. Tentei executar ServiceModelReg e aspnet_regiis.exe com vários sinalizadores e adicionei o recurso de ativação HTTP, mas ainda não funcionou. Mesmo o uso da IU de mapeamento do manipulador no IIS não funcionou, pois não foi possível encontrar System.ServiceModel.Activation.HttpHandler. O que finalmente funcionou foi adicionar o manipulador que Mori menciona manualmente ao meu arquivo web.config.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

Meu projeto estava executando .Net 3.5 e IIS 7.5 no Windows 7 e IIS 7.0 no Win Server 2008 R2.

Janspeed
fonte
0

Tente desmarcar as ativações de HTTP do WCF na janela "Ativar ou desativar recursos do Windows" ( veja aqui ) e reinstale indo para

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

e executar ServiceModelReg -i

Derviş Özçelik
fonte