2017-02-16 3 views
11

Hallo liebe Leute von Stack Overflow. Seit gestern habe ich ein Problem und ich habe SO seitdem gesucht. Ich habe einen UWP-Client und ASP.NET Core Web API. Ich möchte nur einen Stream zu meinem Web-API senden, aber in der Tat war dies eine schwierigere Aufgabe als ich dachte.Post Stream in ASP.NET Core Web Api

Ich habe eine Klasse, die ich nur eine Eigenschaft habe. Die Stream Eigenschaft, wie Sie unten sehen können:

public class UploadData 
{ 
    public Stream InputData { get; set; } 
} 

Dann ist hier mein Code aus meinem Web-Api:

// POST api/values 
[HttpPost] 
public string Post(UploadData data) 
{ 
    return "test"; 
} 

habe ich versucht, den Strom von Körper zu lesen, aber das Ergebnis ist das gleiche. Ich kann die Post-Methode UploadData ist nicht null, aber meine InputData ist immer null.

Hier ist mein UWP-Code für Post-Anfrage.

Ich habe verschiedene Inhaltstypen ausprobiert, die keiner von ihnen zu funktionieren scheint und ich habe keine Ahnung warum. Ich würde wirklich die ganze Hilfe schätzen.

Antwort

8

Auf Client-Seite senden Sie den Stream-Inhalt nicht das gesamte Modell.

private async void PostStreamButton_OnClick(object sender, RoutedEventArgs e) { 
    using (var client = new HttpClient()) { 
     var dummyBuffer = new UnicodeEncoding().GetBytes("this is dummy stream"); 
     var dummyStream = new MemoryStream(dummyBuffer).AsRandomAccessStream().AsStream(); 

     var inputData = new StreamContent(dummyStream); 

     var response = await client.PostAsync("url", inputData); 
    } 
} 

HINWEIS: Mischen Sie nicht .Result blockiert Anrufe mit Asynchron-Anrufe. Diese neigen dazu, Deadlocks zu verursachen.

Auf Server-Update-Aktion

// POST api/values 
[HttpPost] 
public IActionResult Post() { 
    var stream = Request.Body; 
    return Ok("test"); 
} 
+1

Hallo, ich nicht Content-Eigenschaft auf meine Anfrage haben. Ich habe nur Körper. –

+2

@HasanHasanov, Sie haben Recht. Mein Code war für die vorherige Version. Körper ist, was Sie suchen sollten. – Nkosi

+0

Nun, es sieht so aus, als wäre es der Trick. –

Verwandte Themen