WCF su IIS8; * La mappatura del gestore .svc non funziona


272

Sto cercando di ottenere un servizio wcf in esecuzione su IIS8 nel 2012 build 8400.

Durante l'installazione del ruolo Web non è stato possibile trovare le cose di wcf (sotto 3.51) come nel 2008.

Quando è stata installata la mappatura del gestore svc mancava, quindi ho fatto un:

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

Ora la mappatura del gestore è lì, ma ottengo ancora:

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

(Ho rimosso il gestore di file statico.)

Il sito utilizza la pipeline classica per utilizzare la rappresentazione.

Risposte:


553

Più specificamente:

  1. Esegui Server Manager(sulla barra delle applicazioni e menu di avvio)
  2. Scegli il server da amministrare (probabilmente server locale)
  3. Scorri verso il basso fino alla Roles and Featuressezione " ".
  4. Scegli " Add Role or Feature" dal menu a discesa Attività
  5. Nella Add Role or Feature Wizardfinestra di dialogo " ", fai clic su " Features" nell'elenco delle pagine a sinistra.
  6. Espandi ".Net 3.5"o ".Net 4.5", a seconda di ciò che hai installato. (puoi tornare alla rolesschermata " " per aggiungere se non lo hai.
  7. Sotto " WCF Services", seleziona la casella " HTTP-Activation". Puoi anche aggiungere tipi non http se sai di averne bisogno (tcp, named pipe, ecc.).
  8. Fare clic sul "Install"pulsante.

6
Questo non ha funzionato nel mio caso perché sono su Windows 8 (con IIS 8).
Josh Mouch,

9
Se è stato eseguito per la prima volta ServiceModelReg.exe –i dalla directory v3.0, è necessario eseguire anche ServiceModelReg.exe –ua per annullarlo prima che funzioni.
Scott Anderson,

14
Dalla riga di comando: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Activation / All
Richard

4
Che cosa circa gyorgybalassy.wordpress.com/2012/09/24/… ? qual è il modo migliore?
Kiquenet,

9
Stavo letteralmente fissando la pagina "Ruoli del server" per un'ora. Non avevo idea che potevi semplicemente fare clic su "Avanti" o su "Funzionalità" a sinistra. o_O +1
Dan Bechard

219

Ho dovuto abilitare HTTP Activationin .NET Framework 4.5 Advanced Services>WCF Services

Abilita attivazione HTTP


10
questo è ciò che devi fare per Windows 8 dove non esiste un server manager
Simon_Weaver,

2
Questa è la risposta quando si ospita il servizio WCF in Windows 8 e Windows 8.1
vcRobe

L'attivazione http. Indipendentemente se si utilizza http / https? Quindi è un nome sommario per entrambi o c'è ancora una distinzione necessaria lì?
Thomas,

2
Ho riscontrato un problema simile su IIS 10, l'attivazione HTTP è disattivata per impostazione predefinita. Abilitarlo ha risolto il problema immediatamente. Grazie!
Dhruvpatel,

4
Funziona con Windows 10, IIS 10
watbywbarif

45

attiva quanto segue su "Attiva o disattiva le funzionalità di Windows"

a) .Net Framework 3.5 - Attivazione HTTP WCF e Attivazione non HTTP

b) tutti nell'ambito dei servizi WCF


1
Ho dovuto solo attivare .Net Framework 3.5 - Attivazione HTTP WCF
daveywc,

40

Windows 8 con IIS8

  • Colpire Windows+X
  • Seleziona Programs and Features(primo elemento nell'elenco)
  • Seleziona Turn Windows Features on or offa sinistra
  • Espandere .NET Framework 4.5 Advanced Services
  • Espandere WCF Services
  • Abilitare HTTP Activation

qualche script PowerShell per farlo a livello di codice?
Kiquenet,

abbiamo un server, quindi non entrerò mai in Powershell avanzato
Simon_Weaver,

28

Oggi preferisco farlo tramite uno script

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
Grazie dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45sono stati sufficienti per me ...
Shubh,

Questo è il modo migliore per risolvere il problema su una nuova versione 2012R2 + di Windows Server. Probabilmente funziona anche nel 2012, ma per fortuna non ne ho più di quelli su cui provarlo.
Paul Sturm,

e usando lo script PowerShell ?
Kiquenet,

@Kiquenet Questi comandi funzioneranno tutti in PowerShell. Se si è tentato di copiare direttamente il comando di Shubh, è necessario aggiungere un'interruzione di riga o punto e virgola dopo il primo comando prima del secondo comando smem.
kb4000,

10

Siamo riusciti a risolvere l'errore in Windows Server 2012:

  1. Rimozione da "Rimozione guidata ruoli e funzionalità" Funzionalità .NET Framework 4.5 / ASP.NET 4.5 e tutte le sue funzionalità dipendenti
  2. Reinstalla le funzionalità rimosse.

Sembra che la causa sia l'ordine di installazione.

Inoltre, assicurati di avere l'attivazione HTTP installata in Servizi WCF.


L'ho fatto e sembra che abbia ucciso il mio server. Ho disinstallato solo le cose asp.net sotto iis, ma ora quando mi controllo in remoto ottengo una schermata nera e una finestra del prompt dei comandi, come se il server sia solo "server core" ora ... :(
MGOwen il

@MGOwen quando si rimuovono alcune delle funzionalità di .net 4.5 sembra che rimuova anche la Shell grafica del server, che può essere aggiunta di nuovo con alcuni comandi.
John

3

Per le macchine Windows 8 non esiste un'applicazione "Server Manager" (almeno non sono riuscito a trovarla).

Anche se sono stato in grado di risolvere il problema . Non sono sicuro in quale sequenza ho eseguito le seguenti operazioni, ma sembra che una / alcune delle seguenti azioni siano di aiuto:

  1. Attiva quanto segue su "Attiva o disattiva funzionalità di Windows" a) .Net Framework 3.5 - Attivazione HTTP WCF e Attivazione non HTTP b) tutto in Servizi WCF (come specificato in una delle risposte a questa domanda)

  2. eseguito "ServiceModelReg.exe –i" nella cartella "% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \"

  3. ASP.NET 2.0 registrato tramite due comandi (nella cartella C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga "NT AUTHORITY \ NETWORK SERVICE" aspnet_regiis -iru

  4. PC riavviato ... sembra come risultato delle azioni ## 3 e 4 qualcosa si è rotto nella mia configurazione ASP.NET

  5. Ripeti l'azione n. 2

  6. Installa altre due opzioni da "Programmi e funzionalità": .Net Framework 4.5 Advanced Services. Ho controllato entrambe le opzioni secondarie: ASP.NET 4.5 e servizi WCF

  7. Riavvia pool di app.

La sequenza è un po 'folle, ma questo mi ha aiutato e probabilmente aiuterà gli altri


Il bit della chiave sta attivando l'attivazione HTTP.
Umar Farooq Khawaja,



2

usando PowerShell puoi installare la funzionalità richiesta con:

Add-WindowsFeature 'NET-HTTP-Activation'

1

Su Windows 10 (client) puoi anche scrivere questo script usando

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

Si noti che questo è un comando diverso dallo skus del server


0

È richiesta anche la funzionalità di attivazione HTTP della funzionalità di attivazione del processo Windows di .NET framework


0

Questo è stato davvero sciocco per me. Aggiungendo questo qui in quanto è uno dei thread più popolari sui problemi di svc 404.

Ho avuto nelle mie Impostazioni progetto '\ Web \ Project URL, incollato:

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

E per qualche ragione sconosciuta (averlo fatto mille volte) non ho capito subito che il nome del file .svc era alla fine.

DOH!

Avevo appena incollato l'indirizzo dal mio client di test WCF e non l'avevo verificato a sufficienza. Ciò che ha fatto in background è stato creare un'applicazione IIS all'indirizzo .svc e non sono riuscito a ottenere nulla da IIS. Non riuscivo a capire come non potevo nemmeno colpire il file .svc.

Correzione semplice, ovviamente, basta rimuovere l'applicazione in IIS e modificare l'URL del progetto.

Dopo quasi 20 anni, puoi ancora fare errori da scolaretto / errori da principiante. Spero che questo aiuti qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.