Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当FromForm模型绑定包含FormFile属性的复杂类型列表时,未执行操作方法_C#_Asp.net Core_Model Binding - Fatal编程技术网

C# 当FromForm模型绑定包含FormFile属性的复杂类型列表时,未执行操作方法

C# 当FromForm模型绑定包含FormFile属性的复杂类型列表时,未执行操作方法,c#,asp.net-core,model-binding,C#,Asp.net Core,Model Binding,我现在正在进行一个项目,使用AspNetCore 2.2构建一个纯RESTful应用程序。 现在我在实现multipart/formdataupload API时遇到了一个奇怪的错误 我尝试使用我的域对象作为POST API上的模型。 这是我的控制器 [ApiController] [路由(“api/v{v:apiVersion}/[控制器]”) [第1版] 公共级光控器:ControllerBase { [HttpPost] 公共字符串上载([FromForm]TestMultipartMod

我现在正在进行一个项目,使用AspNetCore 2.2构建一个纯RESTful应用程序。 现在我在实现
multipart/formdata
upload API时遇到了一个奇怪的错误

我尝试使用我的域对象作为POST API上的模型。 这是我的控制器

[ApiController]
[路由(“api/v{v:apiVersion}/[控制器]”)
[第1版]
公共级光控器:ControllerBase
{
[HttpPost]
公共字符串上载([FromForm]TestMultipartModel)
{
返回“成功”;
}
}
…我的模型是这样的

公共类TestMultipartModel
{
[必需]
公共int?Num{get;set;}
公共文件{get;set;}
公共字符串Str{get;set;}
公共列表详细信息{get;set;}
}
公共类TestMultipartSubModel
{
公共字符串名称{get;set;}
//公共文件{get;set;}
}
我使用Postman测试我的API,如下所示。 (我很想发布一张邮递员的截图,但我的声誉太低,无法做到这一点:(

一切正常,就好像子模型不包含
ifformfile
属性一样

但是,如果我取消对该行的注释,在发布API后,我的CPU将开始崩溃,但程序除了打印以下日志外将什么也不做:

Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 POST http://localhost:44388/api/v1/photo multipart/form-data; boundary=--------------------------565570716756230895912873 30896

Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executing endpoint 'MyProject.Controllers.PhotoController.Upload (MyProject)'

Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Route matched with {action = "Upload", controller = "Photo", page = ""}. Executing controller action with signature System.String Upload(MyProject.Controllers.TestMultipartModel) on controller MyProject.Controllers.PhotoController (MyProject).
但是它应该在这三行之后打印这一行(当然,运行我的
Upload
方法)


经过几个小时的调试,我仍然不知道如何解决这个问题


如果有人能告诉我1)这是微软的错误还是2)我如何修复这个错误(比如实现我自己的自定义IModelBinder或其他东西),我将非常感激

在谷歌上搜索关键字
aspnetcore ModelBinding infinite loop
后,我在中找到了答案

看起来微软已经在Asp.NETCore3.0中修复了这个错误,所以我现在要做的是说服我的团队升级我们的项目

Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 POST http://localhost:44388/api/v1/photo multipart/form-data; boundary=--------------------------565570716756230895912873 30896

Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executing endpoint 'MyProject.Controllers.PhotoController.Upload (MyProject)'

Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Route matched with {action = "Upload", controller = "Photo", page = ""}. Executing controller action with signature System.String Upload(MyProject.Controllers.TestMultipartModel) on controller MyProject.Controllers.PhotoController (MyProject).
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Executing action method MyProject.Controllers.PhotoController.Upload (MyProject) - Validation state: Valid