簡體   English   中英

ASP.NET Core Web Api中的Post Stream

[英]Post Stream in ASP.NET Core Web Api

你好可愛的Stack Overflow人。 從昨天起我就遇到了問題,從那時起我一直在瀏覽。 我有一個UWP客戶端和ASP.NET核心Web Api。 我只想向我的網絡api發送一個流,但事實上這比我想象的更難。

我有一個課,我只有一個屬性。 您可以在下面看到Stream屬性:

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

那么這是我的Web Api中的代碼:

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

我試圖從體內讀取流但結果是一樣的。 我可以點擊post方法UploadData不為null但我的InputData始終為null

這是我的UWP的郵寄請求代碼。

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 requestContent = new MultipartFormDataContent();
        var inputData = new StreamContent(dummyStream);
        inputData.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        requestContent.Add(inputData, "inputData");

        HttpResponseMessage response = client.PostAsync("url", inputData).Result;
    }
}

我嘗試了各種各樣的內容類型,它們似乎都不起作用,我不知道為什么。 我真的很感激所有的幫助。

在客戶端發送流內容而不是整個模型。

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);
    }
}

注意:不要使用異步調用混合.Result阻塞調用。 那些往往導致死鎖。

在服務器更新操作上

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM