Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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# 文件的发布未使其生效_C#_Asp.net Mvc_Asp.net Core_.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 文件的发布未使其生效

C# 文件的发布未使其生效,c#,asp.net-mvc,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Mvc,Asp.net Core,.net Core,Asp.net Core Mvc,我有一个.NET核心应用程序,它有一个名为Documents的控制器,带有POST签名,如下所示: [HttpPost] public async Task<IActionResult> PostAsync(CreateDocumentRequest createDocumentRequest) public class CreateDocumentRequest { public string Name { get; set; } public string D

我有一个.NET核心应用程序,它有一个名为
Documents
的控制器,带有
POST
签名,如下所示:

[HttpPost]
public async Task<IActionResult> PostAsync(CreateDocumentRequest createDocumentRequest)
public class CreateDocumentRequest
{
    public string Name { get; set; }

    public string Description { get; set; }

    public IFormFile File { get; set; }
}
很简单。然后,我在Postman中配置了一个
POST
请求,如下所示:

[HttpPost]
public async Task<IActionResult> PostAsync(CreateDocumentRequest createDocumentRequest)
public class CreateDocumentRequest
{
    public string Name { get; set; }

    public string Description { get; set; }

    public IFormFile File { get; set; }
}
  • 网址:
  • 正文:配置为
    表单数据
    ,我有
    名称
    说明
    文件
    都配置在键值对界面中。此外,
    文件
    被设置为
    文件
    类型,因此它允许我浏览文件
执行此
POST
时,
DocumentsController
执行构造函数,应用程序洞察表明
PostAsync
已匹配:

激活的事件持续时间线程 应用程序细节:跟踪“与{action=“PostAsync”,controller=“Documents”}匹配的路由。执行操作TdlLims.MediaService.controller.DocumentsController.PostAsync(TdlLims.MediaService)”

然而,它从未进入行动。我的直觉告诉我模型绑定失败了。这有两个原因。首先,路由的所有其他部分都根据应用程序洞察进行工作。第二,如果我完全删除参数,它确实会进入操作。我所尝试的:

  • [FromForm]
    添加到
    createDocumentRequest
  • 只接受一个
    ifformfile
    到动作中,删除复杂对象
  • CreateDocumentRequest
    拆分为三个不同的参数
  • 以及其他一些不那么重要的事情
现在,我怀疑当我们建立Mvc时,我们可能遗漏了一些东西。我们正在配置一些东西,但不知怎么的,我觉得我们缺少了
多部分/表单数据的格式化程序。我有这种感觉,因为我们使用的是
AddMvcCore
而不是
AddMvc

.AddAuthorization()
.AddJsonFormatters()
.AddApiExplorer()
.AddJsonOptions(options =>
                {
                    options.SerializerSettings.Converters.Add(new OptionConverter());
                    options.SerializerSettings.Converters.Add(new StringEnumConverter());
                });
最后,我可以确认控制器正常工作,因为我有一个可访问的
GET
,它可以执行以下操作:

[HttpGet("{id}")]
public async Task<IActionResult> GetAsync(int id)
[HttpGet(“{id}”)]
公共异步任务GetAsync(int id)

最后,问题是文件的大小。如果.NETCore在发生类似情况时抛出错误而不是返回
200
,那就太好了。我试图上传一些图像,我需要找出增加文件大小的正确方法,但是当我上传一个小文本文件时,
POST
起了作用,文件被反序列化到
IFormFile

我相信属性
RequestFormLimits
RequestSizeLimit
最终将在设置最大文件大小方面发挥作用