Ich versuche, einen POST eines JSON-Inhalts aus einer Angular 4-Einzelseite-Anwendung (lokal über http://localhost:4200/ ausgeführt) zu einem REST WCF Webservice-Endpunkt (wird lokal ausgeführt, und Der Endpunkt ist der folgende: http://localhost:3026/ToshlSrvc.svc/Add).Angular 4 POST zu WCF REST-Dienst gibt NULL-Antwort
Ich verwende Standard-Http.post() -Methode + RxJs-Erweiterungen, um die POST-Anfrage zu stellen. Der Webservice empfängt tatsächlich den POST und den relativen Inhalt, und er tut richtig, wofür er entworfen wurde (fügt das deserialisierte Objekt einem Entity Framework-Kontext hinzu, persistiert bei DB und gibt die neue ID zurück), so dass weder auf der Clientseite noch auf der Serverseite Fehler auftreten.
Leider sind die "Daten" -Args der subscribe() - Methode, die zum Abhören von http.post() verwendet wird, immer NULL! Ich kann die neue ID nicht in der POST-Antwort enthalten! Aber wenn ich in Netzwerkaktivitäten von Chrome überprüfen oder wenn ich einen Beitrag mit PostMan Problem, das ich sehe, dass der Antworttext ist folgende:
<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">1250</int>
(1250 in diesem Fall ist die korrekte neue ID)
I kann nicht herausfinden, was hier falsch ist. Haben Sie Vorschläge?
Jede Hilfe wird geschätzt.
DER FALL
Hier ist das Typoskript-Code, wie ich erreichen die webService:
public Add(resource: Entry): void{
const WEBSERVICE_ADDRESS: string = "http://localhost:3026/ToshlSrvc.svc";
const headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8');
return this.http.post(this.WEBSERVICE_ADDRESS + '/Add', JSON.stringify(resource), { headers: headers})
.catch(this.handleError);
.subscribe(data => {
console.log(data); //I always get null!
});
}
Hier ist die Erklärung des Endpunkts des Webservice:
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Add")]
int Add(EntryDTO entry);
Der Körper meines Webservice-Endpunkt:
Die Optionen Preflight und POST-Request-Check: https://www.dropbox.com/s/900q3oor6dex0hl/issueOPTIONS.png?dl=0 https://www.dropbox.com/s/no8o78oqsolxk21/issuePOST.png?dl=0
Um die Kommunikation zwischen diesen verschiedenen Bereichen zu ermöglichen, habe ich CORS aktiviert wie hier https://enable-cors.org/server_wcf.html ausgesetzt + i benötigt eine leere GetOptions hinzufügen() Endpunkt in meinem Webservice wie hier dargestellt: Ajax POST to WCF Rest CORS-compliant WebService throws error 405.
Ich musste dies tun, weil die Enable-Cors.org Strategie überhaupt nicht ohne die oben genannte GetOptions() Methode funktioniert. Ich denke, dass dieser Punkt oder eine falsche CORS-Einstellung in diesem Problem übereinstimmen kann.
Ich sollte sicher schlafen gehen .... es war genug add "ResponseFormat = WebMessageFormat.Json" zum "Add" Webserver Endpunkt. Vielen Dank für das Öffnen meiner Augen! – GiveEmTheBoot
Ich bin froh, dass es geholfen hat :) –