在同一请求中将 Json 数据和文件从 Web 应用程序发送到 Web API 网络核心



我尝试根据同一请求将 json 中的序列化模型和文件发送到 Web api,但我无法实现它,我的代码如下

网页应用

HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest;
request.Method = Verbo;
request.ContentType = "application/json; charset=utf-8";
foreach (var item in Body)
{
request.Headers.Add(item.Key, item.Value);
}

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}

HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
respuesta = reader.ReadToEnd();

网页接口

[HttpPost]
[Route("Insert")]
public async Task<OperationResponse> Insert([FromForm]Brand Model)
{
var res = new OperationResponse
{
Ok = false,
Message = string.Empty
};

return res;
}

绑定模型为空

我的杰森

{
"Name": "Jon Doe",
"TelephoneNumber":"9999999",
"Email": "test@hotmail.com",
"Active": false,
"File": {
"PathFile": {
"ContentDisposition": "form-data; name="Brand.FileName"; filename="test.p12"",
"ContentType": "application/x-pkcs12",
"Headers": {
"Content-Disposition": [
"form-data; name="Brand.FileName"; filename="test.p12""
],
"Content-Type": [
"application/x-pkcs12"
]
},
"Length": 6712,
"Name": "Brand.FileName",
"FileName": "test.p12"
}
}

我错过了一步吗?

多谢。

Postman 输入方法插入,但仍然以 null 为单位进行绑定,代码 estaus 为 200。

由于您的内容类型是application/json; charset=utf-8,因此您需要使用[FromBody]而不是[FromForm]

[HttpPost]
[Route("Insert")]
public async Task<OperationResponse> Insert([FromBody]Brand Model)