2014-05-02 12 views
9

Ho sviluppato una nuova API WEB 2 che funziona perfettamente localmente, tuttavia quando carico lo stesso codice sul mio server di produzione (Arvixe in questo caso) tutto ottenere è un 404 quando lo chiamo. Ho trascorso ORE a cercare sul Web, a leggere forum, ecc. E sono riuscito a trovare alcuna soluzione, quindi mi sto chiedendo qui come ultimo sforzo.API Web ASP.NET 2 Funziona localmente ma non sul server Web di produzione

Attualmente sto verificando solo con il progetto predefinito che viene creato quando si esegue Nuovo progetto> ASP.NET Web API 2 Progetto vuoto in Visual Studio. Questo crea un progetto vuoto con un singolo ValuesController. Dovresti essere in grado di ricevere la risposta JSON chiamando lo /api/values, ma questo non funziona nemmeno.

Sto usando Fiddler per testare l'API localmente e sul server web.

http://localhost:1993/api/values <--- works great 

ma

http://api.mydomain.com/api/values <--- returns 404 

Nota: ho creato un sottodominio "api" in questo caso, ma tutto per il codice per l'API è invariato rispetto a quando è stato creato.

Perché nel mondo funziona in locale ma non sul server di produzione?

+0

Verificare se tutte le DLL sono distribuite e il sito è configurato come un'applicazione in un pool di app .NET 4.5.1. –

+0

Tutte le DLL sono presenti ed è in esecuzione in ASP.NET 4.0 Integrated, ma .NET 4.5.1 è installato ed è in esecuzione sul server. Onestamente non vedo alcuna ragione per cui questo non dovrebbe funzionare. – Cory

+0

E riguardo la radice della tua applicazione? Mostra la pagina predefinita sul server remoto? – Uriil

risposta

1

Che il server restituisca 404 (non trovato) può indicare molte cose. Tuttavia è possibile controllare utilizzando il seguente passo:

  1. aggiungere un documento di testo semplice come readme.txt al tuo una cartella sottodominio http://api.mydomain.com, e cercare di ottenere l'accesso a questo. Se non puoi accedere a quel file, significa che il sottodominio non è configurato correttamente.

  2. Pubblicare il servizio Web utilizzando la funzionalità "Pubblica", in modo che tutte le DLL vengano copiate.

Successivamente, provare di nuovo a raggiungere l'ApI Web.

Spero che aiuto.

0

"Nota: ho creato un sottodominio 'api' in questo caso, ma tutto per il codice per l'API è rimasto invariato da quando è stato creato."

I commenti sopra dei tuoi sono sospetti, devi pubblicare la tua applicazione API WEB nella directory principale. Ad esempio se http://example.com punta alla cartella "MyExample", l'applicazione dovrebbe essere pubblicata nella cartella "MyExample". Successivamente potrai accedere alla tua API con http://example.com/api/ {controller}/{azione}

-1

Un motivo per il metodo web api 2 funzionante su OK sulla macchina locale ma non sul server di produzione è che il metodo che stai chiamando sta lavorando su macchina locale ma non sul server remoto. In tal caso riceverai il messaggio 404 o 500 e verrai perso perché questo routing non funziona. Perché un metodo fallirebbe sul server remoto, beh ci possono essere molte ragioni. Per me, stavo interrogando il database nel mio metodo e il mio connectionString non era impostato per il server remoto. Un modo per risolverlo sarebbe inserire un codice molto semplice in quel particolare metodo e verificare che il routing funzioni. Quindi controlla il tuo codice originale per motivi di errore.

+0

Sto usando ampiamente web api2 nei miei progetti e ho condiviso le mie esperienze personali per aiutare tutti (dato che ho ricevuto molto aiuto da altri). – Zeni

+0

Sto usando ampiamente web api2 nei miei progetti e ho condiviso le mie esperienze personali per aiutare tutti (dato che ho ricevuto molto aiuto da altri). Gli errori 404 e 500 non indicano che il routing è OK ma il metodo sta dando un errore. Ciò potrebbe confondere per molti, poiché potrebbero pensare che ci sia qualcosa di sbagliato nell'instradamento/percorso. Per il mio impegno, ottengo una valutazione che è molto sorprendente per me. Mi piacerebbe sapere la ragione del grande esperto che ha votato questa risposta. Deve avere coraggio per farsi avanti e illuminarmi con la sua saggezza. Sto aspettando ....... – Zeni

0

Solo un semplice suggerimento che sono sicuro che tu abbia già preso in considerazione, ma hai aperto la porta http 80 sul firewall del server?

Inserire anche un semplice file html nella radice del progetto e verificare se il server lo serve.

+0

Poiché 404 è un errore del server web, è improbabile che questo sarebbe restituito se la porta del server web è stata chiusa. –

0

nel tuo caso, dal momento che si crea un sottodominio di 'api', si dovrebbe provare

http://api.mydomain.com/api/api/values 

nota che se si sta utilizzando database per la funzione, è necessario modificare la connectionString nel web config

0

Verificare il framework .net sul dominio ospitato che potrebbe essere vecchio.

  • Web api 2 è supposto su 4.5 framework.
Problemi correlati