C# c语言中的Iform文件序列化与反序列化#

C# c语言中的Iform文件序列化与反序列化#,c#,ef-core-3.0,C#,Ef Core 3.0,我正在从api请求中获取格式文件,并在httppost方法中正确地接收它,然后再次序列化为json格式并存储在azure中 之后,下载了该json并再次尝试将json数据反序列化到Iform文件中,但无法完成 [HttpPost("UploadSingleFile")] public async Task<IActionResult> Postasync([FromForm(Name = "file")] IFormFile formFile)

我正在从api请求中获取格式文件,并在httppost方法中正确地接收它,然后再次序列化为json格式并存储在azure中

之后,下载了该json并再次尝试将json数据反序列化到Iform文件中,但无法完成

[HttpPost("UploadSingleFile")]
public async Task<IActionResult> Postasync([FromForm(Name = "file")] IFormFile formFile)
{
    string json = JsonConvert.SerializeObject(formFile);

    var serResp = JsonConvert.DeserializeObject<IFormFile>(json);

    return serResp;
}
[HttpPost(“UploadSingleFile”)]
公共异步任务Postasync([FromForm(Name=“file”)]ifformfile-formFile)
{
字符串json=JsonConvert.SerializeObject(formFile);
var serResp=JsonConvert.DeserializeObject(json);
返回serResp;
}
错误:无法创建Microsoft.AspNetCore.Http.ifformfile类型的实例


这在ef core c#或任何其他可用方法中是否可行?

您无法创建接口类型的成员

此代码将不起作用

var formFile = new IFormFile();
您应该改用接口实现

试一试

var serResp=JsonConvert.DeserializeObject(json);
这将起作用,因为Json.Net将使用构造函数中的值实例化
Headers
属性,该属性可以创建/初始化,因为它是具体类型的实例

,您最好手动构造
HttpRequestMessage
,并将文件附加到消息,而不是尝试序列化它(不管怎么说,它现在不是json序列化的……那么为什么要尝试在出站上以这种方式序列化它呢?)…为了做到这一点,您很可能需要将文件作为流读取到内存中,然后将其复制到出站服务器request@pinkfloydx33,我的要求实际上,我需要将Iform文件存储在某个地方,如果需要,我将在将来使用,因此只创建json格式的文件并尝试反序列化。不,我们不能创建对象f或文件,请检查您的代码,如果需要,请建议其他解决方案have@vijay这就是我说的。接口成员无法实例化。我尝试了FormFile而不是FormFile,但只面临相同的问题。@vijay您确定错误是相同的吗?它仍然说明
FormFile
?或者可能是
IHeaderDictionary
?是的,您说得对.Facing
IheaderDictionary
错误无法创建类型为Microsoft.AspNetCore.Http.IheaderDictionary的实例。类型是接口或抽象类,无法实例化。路径“Headers.Content Disposition”,第1行,位置143。位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewDictionary(JsonReader阅读器,JsonDictionaryContract契约,布尔值&从非默认创建者创建)
var serResp = JsonConvert.DeserializeObject<FormFile>(json);
    public class FormFileChild : FormFile
    {
        public FormFileChild(HeaderDictionary headers, Stream baseStream, long baseStreamOffset, long length, string name, string fileName) : base(baseStream, baseStreamOffset, length, name, fileName)
        {
            Headers = headers;
        }
    }
var serResp = JsonConvert.DeserializeObject<FormFileChild>(json);