gpt4 book ai didi

c# - 没有 MediaTypeFormatter 可用于从媒体类型为 'HttpRequestMessage' 的内容中读取类型为 'multipart/form-data' 的对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:00:33 30 4
gpt4 key购买 nike

我正在调整最近在 .NET Standard 中启动的项目以使用 Azure Functions。我有一个 HTTP 触发器,我直接从表单发布到该触发器。只有 2 个字段:数字输入和文件上传。

在不引用任何其他库的情况下使用该函数时,我无法在 HttpRequestMessage 上使用 ReadAsFormDataAsync。我收到:

System.Net.Http.UnsupportedMediaTypeException: No MediaTypeFormatter is 
available to read an object of type 'FormDataCollection' from content with
media type 'multipart/form-data'.

我可以使用 ReadAsMultipartAsync 并设法获取发布值。

当我引用 .NET Standard 库时,我什至无法输入该函数,因为它被完全拒绝:

System.Net.Http.UnsupportedMediaTypeException: No MediaTypeFormatter is 
available to read an object of type 'HttpRequestMessage' from content with
media type 'multipart/form-data'

我尝试创建一个全新的 .NET 标准框架框架并引用它以及同样的东西。

作为附加引用,我发现 this post ,但我似乎没有遇到同样的问题。

本来打算提出问题,但决定先在这里尝试。有什么想法吗?

编辑:当 enctype 为 application/x-www-form-urlencoded 时也会发生这种情况。

最佳答案

据我所知,“ReadAsFormDataAsync”方法仅接受“application/x-www-form-urlencoded”类型的内容。不支持获取'multipart/form-data'类型的内容。

因此,如果您想发送比赛的多个部分,则需要使用“ReadAsMultipartAsync”方法。

更多关于如何在azure函数中使用“ReadAsMultipartAsync”方法的详细信息,您可以引用以下代码:

using System.Net;
using System.Net.Http;
using System.IO;
using System.Collections.Specialized;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
string result = "- -";
if (req.Content.IsMimeMultipartContent())
{
var provider = new MultipartMemoryStreamProvider();
req.Content.ReadAsMultipartAsync(provider).Wait();
foreach (HttpContent ctnt in provider.Contents)
{
//now read individual part into STREAM
var stream = ctnt.ReadAsStreamAsync();
return req.CreateResponse(HttpStatusCode.OK, "Stream Length " + stream.Result.Length);

using (var ms = new MemoryStream())
{
//do something with the stream
}

}
}
if (req.Content.IsFormData())
{
NameValueCollection col = req.Content.ReadAsFormDataAsync().Result;
return req.CreateResponse(HttpStatusCode.OK, $" {col[0]}");
}

// dynamic data = await req.Content.ReadAsFormDataAsync();

// Fetching the name from the path parameter in the request URL
return req.CreateResponse(HttpStatusCode.OK, "Doesn't get anything " + result);
}

结果:

enter image description here

关于c# - 没有 MediaTypeFormatter 可用于从媒体类型为 'HttpRequestMessage' 的内容中读取类型为 'multipart/form-data' 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45949830/

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