Die ASP.NET-Web-API 2 funktioniert lokal, nicht jedoch auf dem Produktions-Webserver

9

Ich habe eine neue WEB-API 2 entwickelt, die lokal sehr gut funktioniert, aber wenn ich denselben Code auf meinen Produktionsserver hochlade (in diesem Fall Arvixe), bekomme ich nur einen 404, wenn ich ihn anrufe. Ich habe Stunden damit verbracht, im Internet zu suchen, Foren zu lesen, etc .. und ich konnte keine Lösung finden, also frage ich hier als meine letzte Bemühung.

Ich teste derzeit nur mit dem Standardprojekt, das erstellt wird, wenn Sie Neues Projekt & gt; ASP.NET-Web-API 2 Leeres Projekt in Visual Studio. Dies erstellt ein leeres Projekt mit einem einzelnen ValuesController . Sie sollten die JSON-Antwort mit /api/values aufrufen können, aber das funktioniert nicht einmal.

Ich benutze Fiddler, um die API lokal und auf dem Webserver zu testen.

%Vor%

aber

%Vor%

Hinweis: Ich habe in diesem Fall eine Subdomain "api" erstellt, aber alles für den Code für die API ist seit der Erstellung unverändert.

Warum funktioniert das in der Welt lokal, aber nicht auf dem Produktions-Webserver?

    
Cory 02.05.2014, 23:33
quelle

6 Antworten

1

Dass der Server 404 (Not Found) zurückgibt, kann auf viele Dinge hinweisen. Sie können dies jedoch anhand des folgenden Schritts überprüfen:

  1. Fügen Sie Ihrer Unterdomäne Ссылка ein einfaches Textdokument wie readme.txt hinzu und versuchen Sie, darauf zuzugreifen Das. Wenn Sie nicht auf diese Datei zugreifen können, bedeutet dies, dass die Subdomäne nicht richtig konfiguriert ist.

  2. Veröffentlichen Sie den Webservice mit der Funktion "Veröffentlichen", so dass alle DLLs kopiert werden.

Versuchen Sie danach erneut, die Web API zu erreichen.

Hoffen Sie, dass Hilfe.

    
Toan Nguyen 03.05.2014 14:12
quelle
0

"Hinweis: Ich habe in diesem Fall eine Subdomain 'api' erstellt, aber alles für den Code für die API ist seit der Erstellung unverändert."

Der obige Kommentar ist verdächtig. Sie sollten Ihre WEB-API-Anwendung im Stammverzeichnis veröffentlichen. Wenn Ссылка auf den Ordner "MyExample" zeigt, sollte die Anwendung im Ordner "MyExample" veröffentlicht werden. Danach können Sie mit Ссылка {Controller} / {action}

auf Ihre API zugreifen     
Anupam Shukla 16.10.2015 13:57
quelle
0

Nur ein einfacher Vorschlag, von dem Sie sicherlich schon überzeugt sind, aber haben Sie den http-Port 80 auf der Firewall des Servers geöffnet?

Halten Sie auch eine einfache alte HTML-Datei im Root-Verzeichnis Ihres Projekts und sehen Sie, ob der Server sie aufruft.

    
Tim Norris 11.04.2017 20:57
quelle
0

in Ihrem Fall, da Sie eine Subdomain von 'api' erstellen, sollten Sie

versuchen %Vor%

Beachten Sie, dass Sie, wenn Sie die Datenbank für die Funktion verwenden, den connectionString in Ihrer Webkonfiguration ändern sollten

    
S. Maulana 09.06.2017 04:33
quelle
0

Überprüfen Sie das .net-Framework auf Ihrer gehosteten Domain, das möglicherweise alt ist.

  • Web API 2 wird auf 4.5 Framework verwendet.
user8134940 09.06.2017 04:48
quelle
-1

Ein Grund dafür, dass die Web-API-2-Methode auf dem lokalen Computer, aber nicht auf dem Produktionsserver funktioniert, ist, dass die Methode, die Sie aufrufen, auf dem lokalen Computer, aber nicht auf dem Remote-Server funktioniert. In einem solchen Fall erhalten Sie die Nachricht 404 oder 500, und Sie würden verloren gehen, warum dieses Routing fehlschlägt. Warum eine Methode auf einem Remote-Server fehlschlagen würde, kann viele Gründe haben. Für mich habe ich in meiner Methode Datenbank abgefragt und mein connectionString wurde nicht für den Remote-Server eingestellt. Eine Möglichkeit, dies zu lösen, wäre, einen sehr einfachen Code in diese spezielle Methode zu schreiben und zu testen, dass das Routing funktioniert. Überprüfen Sie dann Ihren ursprünglichen Code auf Fehler.

    
Zeni 26.05.2016 12:57
quelle