HTTP 404 durante l'accesso al file .svc in IIS


87

Di recente ho creato un servizio WCF che funziona bene quando testato da Visual Studio 2008. ma quando distribuisco il progetto su IIS e provo ad accedere al file .svc da IIS, ottengo questo errore:

"Server Error in '/' Application.The resource cannot be found.  "

Ho riscontrato questo problema negli ultimi 4 giorni.

nelle mappature del gestore di IIS Manager, posso vedere due voci per .svc:

svc-Integrated and svc-ISAPI-2.0

Risposte:


75

È necessario aggiungere una mappatura per l'estensione SVC ad ASP.NET. Il modo più semplice per farlo è eseguire ServiceModelReg.exe -ida C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Potrebbe anche essere necessario abilitare ASP.NET se non lo si è già fatto.


Se utilizzi Windows Server 2012 o 2016, segui invece queste istruzioni:


Hai provato a riavviare IIS in seguito?
tvanfosson

Hai ora una mappatura MIME per .svc?
tvanfosson

Non è mappatura mime, mappatura estensione applicazione. vedere msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim

22
Importante: non farlo su Server 2012 con .NET 4.5 installato. Mi ha incasinato fino a quando non ho eseguito ServiceModelReg.exe -ua. Vedi qui per la soluzione Server 2012: stackoverflow.com/questions/11116134/…
Scott Anderson

110

Cosa ha funzionato per me, su Windows 2012 Server R2:

WCF HTTP 404

Grazie a "Aaron D"


4
Di gran lunga l'opzione più semplice.
BIDeveloper

Ha funzionato per me su desktop Win10, Win8.1 e server Win2012 :) Grazie!
Skipper

Ha funzionato per me su desktop Win10, Win8.1 e server Win2012 :) Grazie!
Skipper

2
Per qualche motivo, ho dovuto installare la funzionalità per 3.5 e 4.5 e tramite la riga di comando: dism /online /enable-feature /featurename:WCF-http-Activation45 /all e anche dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan

1
Funziona anche su Sever 2019
Zar Shardan

56

Ho trovato queste istruzioni su un post del blog che indicava questo passaggio, che ha funzionato per me (Windows 8, 64 bit):

Assicurati che nelle funzionalità di Windows siano spuntate entrambe le opzioni WCF in .Net framework. Quindi vai su Pannello di controllo -> Programmi e funzionalità -> Attiva / disattiva funzionalità di Windows -> Funzionalità -> Aggiungi funzionalità -> Funzionalità .NET Framework XX. Assicurati che .Net framework indichi che è installato e assicurati che il nodo di attivazione WCF sottostante sia selezionato (casella di controllo spuntata) e che siano selezionate anche entrambe le opzioni in Attivazione WCF.
Questi sono:
* Attivazione HTTP
* Attivazione non HTTP
Entrambe le opzioni devono essere selezionate (casella spuntata spuntata).

2
Se potessi votare a favore più di una volta, questo mi stava facendo impazzire, applausi!
Chris W.

4

Vedo che hai già risolto il tuo problema, ma per i posteri:

Abbiamo avuto un problema simile e il gestore SVC era già installato correttamente. Il nostro problema era che il gestore ExtensionlessUrl elaborava le richieste prima che raggiungessero il gestore SVC.

Per verificarlo, in Handler Mappings in IIS Manager a livello di server web, visualizza l'elenco dei gestori in ordine (è un'opzione sul lato destro). Se i vari gestori ExtensionlessUrl vengono visualizzati sopra i gestori SVC, spostali ripetutamente verso il basso finché non si trovano nella parte inferiore.


1

Verifica che la directory sia stata convertita in un'applicazione è il tuo IIS.


1

Oggi ho avuto lo stesso problema.

Per me, la soluzione era entrare in IIS, fare clic con il pulsante destro del mouse sul nuovo nome del sito Web, selezionare Proprietà, ASP.Net e modificare la versione di ASP.Net da "1.1.4322" (che aveva impostato come predefinito) a 2.0.50727.

Dopo averlo fatto, potrei fare clic con il pulsante destro del mouse sul file .svc, fare clic su "Sfoglia" e vedere la pagina web del servizio amichevole.


1

Questo può anche diventare un problema dopo aver abilitato la compatibilità di gestione IIS 6 in Windows 10. L'impostazione dell'Attivazione HTTP del framework in Servizi WCF risolverà il problema.


0

Nel mio caso, l'errore è stato causato da impostazioni di mappatura errate nel file applicationhost.config (\ System32 \ inetsrv \ config). Per qualche motivo, Visual Studio 2013 lo ha danneggiato durante la creazione di una directory virtuale in IIS. La soluzione consisteva nel modificare manualmente la sezione dei siti nel file.


0

Sono disponibili 2 versioni di .net framework sotto le funzionalità in aggiungi ruolo / funzionalità nel server 2012

un. 3.5

b. 4.5

A seconda del framework utilizzato, è possibile abilitare l' attivazione HTTP nei servizi WCF. :)


0

Nel mio caso Win 10. il file applicationHost.config è danneggiato da VS 2012. E puoi ottenere la copia della cronologia di questo file in C: \ inetpub \ history. Quindi riavvia IIS e funziona correttamente.


0

Ho dovuto aggiungere l'estensione .svc alle estensioni consentite nelle impostazioni di filtro delle richieste (ho ricevuto errori 404.7 prima).

inserisci qui la descrizione dell'immagine


0

L'aggiunta del suffisso .svc come consentito nel filtro delle richieste ha funzionato per me.


0

Nessuna delle soluzioni precedenti ha risolto questo errore per me. Ho dovuto impostare quanto segue in web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Vorrei cogliere questa opportunità per MALEDICARE Microsoft ancora una volta per aver creato un tale casino con .NET Framework e aver reso la vita degli sviluppatori così miserabile per così tanto tempo!

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.