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


272

Estou tentando obter um serviço wcf em execução no IIS8 em 2012, compilação 8400.

Ao instalar a função web, o material wcf (abaixo de 3.51) não foi encontrado em 2008.

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

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

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

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

(Eu removi o manipulador de arquivo estático.)

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

Respostas:


553

Mais especificamente:

  1. Executar 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 Roles and Featuresseção " ".
  4. Escolha " Add Role or Feature" no menu suspenso Tarefas
  5. Na Add Role or Feature Wizardcaixa de diálogo " ", 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 rolestela " " para adicionar se não tiver.
  7. Em " WCF Services", marque a caixa " HTTP-Activation". Você também pode adicionar tipos não http se souber que precisa deles (tcp, pipes nomeados, etc.).
  8. Clique no "Install"botão

6
Este não funcionou no meu caso, porque eu estou no Windows 8 (com IIS 8).
Josh Mouch

9
Se você executou o ServiceModelReg.exe pela primeira vez - i no diretório v3.0, também é necessário executar o ServiceModelReg.exe --ua para desfazê-lo antes que isso funcione.
Scott Anderson

14
Na linha de comando: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Activation / All
Richard

4
O que é sobre gyorgybalassy.wordpress.com/2012/09/24/… ? qual é o melhor caminho?
Kiquenet

9
Eu estava literalmente olhando a página "Funções do servidor" por uma hora. Eu não tinha ideia de que você poderia simplesmente clicar em "Avançar" ou clicar em "Recursos" à esquerda. o_O +1
Dan Bechard 06/04

219

Eu tive que ativar HTTP Activationem .NET Framework 4.5 Advanced Services>WCF Services

Ativar ativação HTTP


10
isto é o que você precisa fazer para o Windows 8, onde não há gerente servidor
Simon_Weaver

2
Esta é a resposta quando você está hospedando o serviço WCF no Windows 8 e Windows 8.1
vcRobe

A ativação do http. Independentemente de você usar http / https? Assim, esse é um nome resumido para ambos ou ainda existe uma distinção necessária?
Thomas

2
Eu enfrentei um problema semelhante no IIS 10, a ativação por HTTP está desativada por padrão. A habilitação resolveu o problema imediatamente. Obrigado!
precisa saber é o seguinte

4
Funciona para Windows 10, IIS 10
watbywbarif 29/03

45

ative o seguinte em 'Ativar ou desativar os recursos do Windows'

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

b) tudo sob Serviços WCF


1
Eu só tinha para ligar .Net Framework 3.5 - WCF HTTP Ativação
daveywc

40

Windows 8 com IIS8

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

algum script do PowerShell para fazê-lo programaticamente?
19413 Kiquenet

temos um servidor para que eu não nunca entrar em Powershell avançada
Simon_Weaver

28

Eu prefiro fazer isso via 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

2
Graças dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45eram suficientes para mim ...
Shubh

Essa é a melhor maneira de corrigir isso em uma nova versão 2012R2 + do Windows Server. Provavelmente funciona em 2012 também, mas felizmente, não tenho mais pessoas para testar isso.
Paul Sturm

e usando o script do PowerShell ?
Kiquenet

@Kiquenet Esses comandos funcionarão em PowerShell. Se você tentou copiar diretamente o comando de Shubh, precisará adicionar uma quebra de linha ou ponto-e-vírgula após o primeiro comando antes do segundo comando dism.
kb4000 18/06

10

Conseguimos resolver o erro no Windows Server 2012:

  1. Removendo do "Assistente para Remover Funções e Recursos" Recursos do .NET Framework 4.5 / ASP.NET 4.5 e todos os seus recursos dependentes
  2. Reinstalando os recursos removidos.

Parece que a ordem da instalação é a causa.

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


Eu fiz isso e parece ter matado meu servidor. Eu apenas desinstalei o material asp.net no iis, mas agora, quando ligo remotamente, recebo uma tela preta e uma janela de prompt de comando, como se o servidor fosse apenas "núcleo do servidor" agora ... :(
MGOwen

Quando você remove alguns dos recursos do .net 4.5, parece que ele também remove o Shell Gráfico do Servidor. Isso pode ser adicionado novamente com alguns comandos.
John John

3

Para máquinas Windows 8, não há aplicativo "Server Manager" (pelo menos não consegui encontrá-lo).

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

  1. Ative o seguinte em 'Ativar ou desativar recursos do Windows' a) .Net Framework 3.5 - Ativação HTTP do WCF e Ativação não-HTTP b) tudo sob os Serviços WCF (conforme especificado em uma das respostas a esta pergunta)

  2. executado "ServiceModelReg.exe –i" na pasta "% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \"

  3. ASP.NET 2.0 registrado por meio 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 das ações # 3 e 4, algo foi quebrado na minha configuração do ASP.NET

  5. Repita a ação 2

  6. Instale duas outras opções em "Programas e Recursos": .Net Framework 4.5 Advanced Services. Eu verifiquei as duas opções secundárias: serviços ASP.NET 4.5 e WCF

  7. Reinicie o pool de aplicativos.

A sequência é meio louca, mas isso me ajudou e provavelmente ajudará outros


O bit principal está ativando a Ativação HTTP.
Umar Farooq Khawaja



2

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

Add-WindowsFeature 'NET-HTTP-Activation'

1

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

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

Note que este é um comando diferente do servidor skus


0

É o recurso de Ativação HTTP do .NET framework O recurso Ativação de Processos do Windows também é necessário


0

Isso foi realmente bobo para mim. Adicionando isso aqui, pois é um dos tópicos mais populares nos problemas do svc 404.

Eu tinha no \ Configurações \ Projeto \ URL do meu projeto, colado:

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

E por algum motivo desconhecido (tendo feito isso mil vezes) não percebeu imediatamente que o nome do arquivo .svc estava no final.

DOH!

Acabei de colar o endereço do meu cliente de teste do WCF e não o verifiquei o suficiente. O que isso fez em segundo plano foi criar um aplicativo IIS no endereço .svc e eu não estava obtendo nada do IIS. Eu não conseguia entender como não conseguia acessar o arquivo .svc.

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

Depois de quase 20 anos nisso, você ainda pode cometer erros de estudante / erro de novato. Espero que isso ajude alguém.

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.