Ich habe ein seltsames Problem: Ich habe eine ClientSide App (jquery) gegen eine WebAPI auf der gleichen Domäne ausgeführt. Wenn ich es auf meinem lokalen Computer in IIS hostet, funktioniert es als eine Stammwebsite (Sites-> MyApp) OK (Get und Post). Ein typischer API-Aufruf wie folgt aussieht:Ajax Post to Web API ist erfolgreich, aber .. scheitert auf der Clientseite, wenn gehostet auf Standardwebsite (IIS)
$.get("api/GetList", null, function (data) {
var list = data;
})
aber, wenn ich es unter der "Default Web Site" in IIS hosten, als Unter Anwendung, ein typischer API-Aufruf sieht wie folgen aus:
$.get("MyApp/api/GetList", null, function (data) {
var list = data;
})
Alle GET-Anrufe funktionieren gut, aber der POST-Anruf wirkt seltsam. Ich mache einen POST Aufruf wie folgt:
$.ajax({
url: "MyApp/api/Fields",
type: 'POST',
dataType: 'json',
contentType: false,
cache: false,
processData: false,
data: data,
success: function (res) {
var x = res;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//
}
});
Die Web-API-Methode wie folgt aussieht:
[HttpPost]
[Route("api/Fields")]
public async Task<IHttpActionResult> Post() {...
Wenn ich den POST Aufruf ausführen, wird es an den Server und die Server-Methode funktioniert gut, aber Wenn es zurückkommt, erhalte ich einen Fehler. Von hier aus: http://localhost/MyApp/index.html ich die Absenden-Button klicken und diese bekommen (auch wenn die Aktion auf Server-Seite gelungen !!): HTTP-Fehler 404.0 - Nicht Angeforderte URL http://localhost:80/api/Fields?input_1=sometext
So Gefunden wie Sie die Route zu MeineAnw sehen können, verschwunden und IIS behandelt die Anfrage als GET, obwohl ich einen POST gemacht habe !! und kehrt zum Stammverzeichnis zurück: Standardwebsite statt zu localhost/MyApp zurückzukehren.
Derselbe Code 1: 1, wenn auf einem Testserver auf IIS mit derselben Konfiguration ausgeführt wird, funktioniert ok ohne diesen Fehler. Irgendwelche Ideen?
Vielleicht zu umformulieren und kürzen es ein bisschen: Ich mache eine AJAX Post auf http: // localhost/MyApp/api/fields (mit F5 in VS2015 Ich sehe, dass es die richtige Methode erreicht) Aber ich bekomme als Antwort: HTTP Fehler 404.0 - Nicht gefunden Angeforderte URL http: // localhost: 80/api/Felder? Input_1 = 123 und: Die angeforderte Ressource unterstützt die HTTP-Methode 'get' nicht !!! 1. Es war ein POST. 2. Ich habe http: // localhost/MyApp/api/fields und nicht http: // localhost: 80/api/Fields aufgerufen. – amira