WCF no IIS8; mapeamento de manipulador * .svc não funciona

Eu estou tentando obter um serviço wcf em execução no IIS8 em 2012 construir 8400.

Ao instalar o papel web, o material wcf (abaixo de 3.51) não deveria ser encontrado como em 2008.

Quando instalado o mapeamento do manipulador svc estava faltando, então eu fiz um:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe –i 

Agora o mapeamento do manipulador está lá, mas ainda assim recebo:

 The resource you are looking for does not have a handler associated with it. 

(Eu removi o manipulador de arquivos estáticos.)

O site está usando o pipeline clássico para usar a representação.

Mais especificamente:

  1. Executar o Server Manager (na barra de tarefas e no menu iniciar)
  2. Escolha o servidor para administrar (provavelmente servidor local)
  3. Role para baixo até a seção ” Roles and Features “.
  4. Escolha ” Add Role or Feature ” no menu suspenso Tarefas
  5. Na checkbox de diálogo ” Add Role or Feature Wizard “, clique em ” Features ” na lista de páginas à esquerda.
  6. Expanda ".Net 3.5" ou ".Net 4.5" , dependendo do que você instalou. (você pode voltar para a canvas ” roles ” para adicionar, se não tiver.
  7. Em ” WCF Services “, marque a checkbox ” HTTP-Activation “. Você também pode adicionar tipos não-http se souber que precisa deles (tcp, pipes nomeados, etc.).
  8. Clique no botão "Install" .

Eu tive que habilitar a HTTP Activation no .NET Framework 4.5 Advanced Services > WCF Services

Ativar ativação de HTTP

LIGUE o seguinte em ‘Ativar ou desativar resources do Windows’

a) .Net Framework 3.5 – Ativação HTTP do WCF e Ativação Não-Http

b) tudo em serviços WCF

Windows 8 com o IIS8

  • Bata no Windows+X
  • Selecione Programs and Features (primeiro item da lista)
  • Selecione Turn Windows Features on or off à esquerda
  • Expandir o .NET Framework 4.5 Advanced Services
  • Expanda WCF Services
  • Ativar HTTP Activation

Eu prefiro fazer isso através de um script hoje em dia

 REM install the needed Windows IIS features for WCF dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45 REM Feature Install Complete pause 

Conseguimos resolver o erro no Windows Server 2012 por:

  1. Removendo de “Remover Funções e Assistente de Recursos” Recursos do .NET Framework 4.5 / ASP.NET 4.5 e todos os seus resources dependentes
  2. Reinstalando os resources removidos.

Costuma a ordem de instalação é a causa.

Além disso, verifique se você possui a Ativação HTTP instalada nos Serviços do WCF.

Para máquinas com Windows 8, não há aplicativo “Gerenciador de Servidores” (pelo menos eu não consegui encontrá-lo).

Embora eu fosse capaz de resolver o problema . Não tenho certeza em qual sequência eu fiz as seguintes operações, mas parece que uma / poucas das seguintes ações ajudam:

  1. Ative o seguinte em ‘Ativar ou desativar resources do Windows’ a) .Net Framework 3.5 – Ativação HTTP do WCF e Ativação não HTTP (Http Activation) b) all em Serviços do WCF (conforme especificado em uma das respostas desta pergunta)

  2. executado “ServiceModelReg.exe –i” na pasta “% windir% \ Microsoft.NET \ Framework \ v3.0 \ Fundação de Comunicação do Windows \”

  3. Registrado ASP.NET 2.0 através de dois comandos (na pasta C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga “NT AUTHORITY \ NETWORK SERVICE” aspnet_regiis -iru

  4. PC reiniciado … parece que como resultado como ações ## 3 e 4 algo foi quebrado na minha configuração do ASP.NET

  5. Repetir a ação # 2

  6. Instale duas outras opções dos “Programas e resources”: .Net Framework 4.5 Advanced Services. Eu verifiquei as duas sub opções: ASP.NET 4.5 e serviços WCF

  7. Reinicie o Pool de aplicativos.

A sequência é meio louca, mas isso me ajudou e provavelmente vai ajudar outras

A ordem de instalação é muito importante ao configurar o IIS 8 no Windows 8 ou no Windows Server 2012.

Eu enfrentei muitos problemas ao configurar o IIS 8, mas finalmente esses links me ajudaram

  • Instalando o IIS 8
  • Configurando o WCF

Usando o PowerShell, você pode instalar o recurso necessário com:

 Add-WindowsFeature 'NET-HTTP-Activation' 

No Windows 10 (cliente), você também pode criar scripts usando

 Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All 

Note que este é um comando diferente do servidor skus

Seu recurso de Ativação HTTP do .NET framework O recurso Windows Process Activation também é necessário

Isso foi muito bobo para mim. Adicionando isto aqui como é um dos tópicos mais populares em questões de svc 404.

Eu tinha na URL do Project Settings \ \ Web \ Project, colado:

 http://blah.webservice.local.blahblah.com/Blah.svc 

E por alguma razão desconhecida (tendo feito isso mil vezes) não percebeu imediatamente que o nome do arquivo .svc estava no final.

DOH!

Eu tinha apenas colado o endereço do meu cliente de teste do WCF e não tinha verificado suficientemente. O que isso fez no fundo foi criar um aplicativo do IIS no endereço .svc e eu estava ficando nada fora do IIS. Eu não conseguia descobrir como eu não conseguia nem atingir o arquivo .svc.

Correção simples, obviamente, basta remover o aplicativo no IIS e alterar o URL do projeto.

Após quase 20 anos, você ainda pode cometer erros de estudante / erros de iniciante. Espero que isso ajude alguém.