2013-06-12 3 views
11

Sto cercando di apprendere i servizi Web in .NET mvc4. Ho provato a creare una nuova applicazione Internet e ad aggiungere un servizio Web (asmx) al progetto.Errore HTTP 404 durante il richiamo di un servizio Web locale in .NET MVC4

Per impostazione predefinita, il VS aggiunge un servizio Web "HelloWorld". Quando provo a eseguirlo nel browser, ottengo l'elenco delle operazioni, la descrizione del servizio (WSDL) e i dettagli dell'operazione HellowWorld. Tuttavia, quando provo a richiamare il webservice, viene visualizzato il seguente errore:

Errore server nell'applicazione '/'.

Impossibile trovare la risorsa.

Descrizione: HTTP 404. La risorsa che si sta cercando (o una delle sue dipendenze ) potrebbe essere stata rimossa, se il suo nome è stato modificato, oppure è temporaneamente non disponibile. Si prega di rivedere il seguente URL e fare in modo che sia scritto correttamente.

Potrei mancare qualche passo/impostazione di base, credo. Qualcuno potrebbe aiutare per favore. Grazie.

+0

La mia prima domanda è: perché hai scelto un servizio web ASMX su WCF? –

+0

Non ho scelto ASMX. sto solo cercando di creare un servizio Web come indicato in alcuni libri. Alla fine utilizzerei una WebAPI. Comunque volevo creare ed esempio che avrebbe sia una WebAPI che un ASMX per scopi dimostrativi. – saurabh

risposta

28

Ho ricevuto la risposta da uno dei miei colleghi :).

Quando invochiamo il servizio, MVC tenta di risolvere il percorso come specificato in RegisterRoutes. Quindi cerca di trovare un controller con quel nome e un metodo con il nome uguale a quello dell'operazione all'interno di quel controller. La risoluzione, ignora i percorsi con estensione .asmx. È possibile farlo aggiungendo la seguente riga in RouteConfig.cs:

routes.IgnoreRoute("{*x}", new { x = @".*\.asmx(/.*)?" }); 

e ha funzionato. Grazie.

+1

Grazie mille amico! dopo tanta lotta ho potuto scoprire le tue soluzioni .. – Dilip0165

+0

Anche risposta utile http://stackoverflow.com/questions/4675367/ignoreroute-with-webservice-exclude-asmx-urls-from-routing per –

+0

So che questo è vecchio , ma grazie per il post. Ho lottato con questo per 7-8 ore. I miei servizi web locali hanno smesso di funzionare e non sono riuscito a scoprirlo, cosa è successo fino a quando non ho trovato questo post. Per gli altri con lo stesso problema, il "routes.ignoreRoutes .." deve essere aggiunto in RouteConfig.cs. – Troels