gpt4 book ai didi

c# - 在 ASP.NET Core Web Api 中发布流

转载 作者:可可西里 更新时间:2023-11-01 03:10:08 26 4
gpt4 key购买 nike

你好可爱的 Stack Overflow 的人们。从昨天开始,我遇到了问题,从那以后我一直在浏览 SO。我有一个 UWP 客户端和 ASP.NET Core Web Api。我只想向我的 Web 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 is not 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");
}

关于c# - 在 ASP.NET Core Web Api 中发布流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com