Errore HTTP 404.3 - Non trovato "durante la navigazione nel servizio wcf su Windows Server 2008 (64 bit)


89

Sto sviluppando un'applicazione basata su .Net Framework 3.5 sp1 e ospitata su Windows Server 2008 (64bit).

Durante la navigazione locale del servizio wcf (.svc) tutto è ok, ma durante la navigazione con l'URL completo del dominio, ha ricevuto un errore.

l'indirizzo locale è così: http: //localhost/MyService.svc

e l'indirizzo del dominio è così: http://MySite.ir/MyService.svc

tra l'altro le pagine (.aspx) e altri file funzionano correttamente sia su localhost che con indirizzo di dominio.

qualsiasi idea sarebbe apprezzata

Ecco l'errore dettagliato:


Errore HTTP 404.3 - Non trovato

La pagina che stai richiedendo non può essere servita a causa della configurazione dell'estensione. Se la pagina è uno script, aggiungi un gestore. Se il file deve essere scaricato, aggiungi una mappa MIME. Informazioni dettagliate sugli errori

Modulo: StaticFileModule

Notifica: ExecuteRequestHandler

Gestore: StaticFile

Codice di errore: 0x80070032

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

Percorso fisico: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Metodo di accesso: anonimo

Accesso utente anonimo

Risposte:


227

Assicurati di aver attivato i componenti WCF da qui .

O un modo alternativo e semplice è, vai al pannello di controllo -> Attiva o disattiva la funzionalità di Windows -> e assicurati di aver selezionato tutte le opzioni come indicato nello screenshot qui sotto.

inserisci qui la descrizione dell'immagine

Potrebbe essere necessario attivare ciascuna casella e accettare nel caso in cui si ottengano errori durante l'attivazione di tutte le funzionalità contemporaneamente


37
.Net Framework 4.5 Advanced Services -> Check WCF Services e -> HTTP Activation l'ha fatto per me!
devHead

3
Windows Server 2012: solo l'attivazione HTTP necessaria e la condivisione delle porte selezionata.
dibs487

2
Aggiungerei a questa risposta di attivare le scatole una per una. Tutti i controlli nello stesso tempo potrebbero non riuscire. Succede in Windows Server 2012.
harveyt

2
questa risposta dovrebbe essere in cima
markthewizard1234

3
Questa è la risposta corretta. Questo ha risolto il problema per me e non dovevo aggiungere manualmente nulla manualmente a IIS Handler Mappings.
Anthony

25

OK, ecco la risposta:

Vai a Mappature gestori | Aggiungi gestore gestore -> E quindi aggiungi le informazioni seguenti

Percorso richiesta: * .svc

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

Nome: svc-Integrated


3
Per chiunque desideri aggiungerlo al proprio file web.config, questo funziona per me in un progetto .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
Per me, l'aggiunta della riga da @StefanMohr a Web.config non ha funzionato del tutto. Tuttavia, ho cambiato path="*.svc"e verb="*"ed ha funzionato grande. Quindi, la riga che ho usato che ha funzionato è stata: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(aggiunta in configuration / system.webServer / handlers).
Aron Boyette

11

Se qualcuno ha questo problema su Windows Server 2012, la risposta di Bill Moon qui lo ha risolto per me:

"Per Windows Server 2012 ... Da Server Manager, fai clic su Aggiungi ruoli e funzionalità, seleziona il server appropriato, quindi seleziona Funzionalità. In Funzionalità di .NET Framework 4.5, vedrai Servizi WCF e sotto trova l'attivazione HTTP. "


1
In qualsiasi applicazione web esistente sarà inoltre necessario eseguire le seguenti operazioni dopo aver aggiunto la funzionalità Windows: - Avviare inetmgr - Aprire "Mappature gestori" - Verificare se sono presenti le mappature svc-ISAPI per l'estensione * .svc. In caso contrario, utilizza l'azione "Torna a genitore" per copiarli dal sito web principale. Si noti che ciò presuppone che i mapping dei gestori personalizzati siano configurati in web.config per l'applicazione, come di solito accade in IIS7 +. In caso contrario, li perderai quando esegui "Revert To Parent".
Berend Engelbrecht

8

Ho Windows 10 nel mio laptop e utilizzo Visual Studio 2015 per lo sviluppo WCF. WCF funziona correttamente in Visual Studio, ma quando è ospitato in IIS ho ricevuto lo stesso errore.

Ho controllato il gestore IIS. estensione svc mancante. Quindi ho provato ad aggiungere un nuovo gestore in IIS come suggerito da Mori nella prima risposta. Non ho trovato il tipo "System.ServiceModel.Activation.HttpHandler".

Quindi ho aperto "Attiva o disattiva le funzionalità di Windows" e ho installato le funzionalità come evidenziato nella schermata.

Questo ha funzionato per me.

inserisci qui la descrizione dell'immagine


0

Se utilizzi .Net 4.x, PublicKeyToken è 31bf3856ad364e35.

Tuttavia, seguendo questo post sull'installazione corretta dei servizi WCF in IIS, il gestore è stato configurato per me.


0

Volevo aggiungere questo come commento alla risposta ma non avevo abbastanza rappresentante. Ho provato a eseguire ServiceModelReg e aspnet_regiis.exe con vari flag e aggiunto la funzione di attivazione HTTP ma ancora non ha funzionato. Anche l'utilizzo dell'interfaccia utente di mapping del gestore in IIS non ha funzionato poiché non è stato possibile trovare System.ServiceModel.Activation.HttpHandler. Ciò che alla fine ha funzionato è stato l'aggiunta manuale del gestore menzionato da Mori al mio file 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" />

Il mio progetto eseguiva .Net 3.5 e IIS 7.5 su Windows 7 e IIS 7.0 su Win Server 2008 R2.


0

Prova a deselezionare le attivazioni HTTP WCF dalla finestra "Attiva o disattiva le funzionalità di Windows" ( vedi qui ) e reinstalla andando a

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

ed eseguire ServiceModelReg -i

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.