Laden...

Core 3.0: WebApi.HttpClient übergibt null

Erstellt von schuppsl vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.059 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 4 Jahren
Core 3.0: WebApi.HttpClient übergibt null

Hallo zusammen,

schon 1000 mal berührt, tausend mal hat's geklappt.
Nun hat's Zoom gemacht.

Doch zur Sache:
Ich habe eine kleine .NET Core 3.0 WebApi Anwendung.

Hier gibt es im Controller eine Funktion, welche einen anderen WebService aufruft.
Das ganze wird mit dem Postman getestet und die Daten werden auch korrekt übergeben.

Der Controller sieht so aus:


 [Route("api/[controller]")]
    [ApiController]
    public class SapRueckmeldungsController : ControllerBase
    {
....
...
....
 [HttpPost]
        [Route("CheckRueckmeldung")]

        public  ActionResult<SapRueckmeldung> CheckRueckmeldung(SapWriteData data)
        {


data ist korrekt gefüllt.
In diesem ist dann folgende Funktion:

 

HttpClient client = new HttpClient
            {
                BaseAddress = _baseAdress
            };

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.PostAsJsonAsync(_extension, data).Result;

In der letzten Zeile, die Variable data ist gefüllt und stellt ein Model "SapWriteData" dar.

Diese Webanwendung wird damit aufgerufen:


   public IHttpActionResult GetColorNew([FromBody]SapWriteData value)

Value ist hier aber immer null und das ist das Problem.

Kann es am "FromBody" liegen?
Eigentlich ja nicht, denn diese Funktion und andere rufe ich auf exakt dieselbe Weise ziemlich oft in anderen Funktionen in anderen Projekten auf.

Woran könnte das dann liegen?

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 4 Jahren

Also am FromBody liegt es nicht.
Übergabe, d.h. value = null.

Dann muss es daran liegen, dass ich von einem Webservice aus einen anderen Webservice aufrufe?
Irgendwas mit Threads?

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 4 Jahren

Lösung:

zwar verstehe ich es nicht, aber ich musste vorher die Daten noch zu Json umwandeln:


 resJson = new StringContent(content: JsonConvert.SerializeObject(data),
                            encoding: Encoding.UTF8,
                            mediaType: "application/json");