请求DTO未填充包含“ multipart / form-data”的PATCH请求

问题描述

我有以下patch请求:

curl --location --request PATCH 'http://localhost:8888/image' \
--form 'Width=1500' \
--form 'Height=1000' \
--form 'ID=5f3c03457118797a3a7a6f8c' \
--form 'File=@/D:/IMG_20190901_144155.jpg'

我的请求DTO如下:

    [Route("/image")]
    public class Request : IReturnVoid
    {
        public string ID { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
    }

服务方法如下:

    public class ImageService : Service
    {
        public async Task Patch(Request req)
        {
            var id = req.ID;
            var height = req.Height;
            var width = req.Width;

            await Task.Delay(100);
        }
    }

我遇到的问题是服务堆栈未填充DTO请求。

如果我放置一个断点并在调试Servicestack.Web.IRequest.FormData属性中进行检查,它将显示以下异常:

'(((ServiceStack.Host.NetCore.NetCoreRequest)Request).FormData'引发了类型为'System.IO.InvalidDataException'的异常

但是,如果我只是将其更改为POST而不是PATCH的请求,一切都会很好。

这是服务栈中的错误还是我在这里错过了一些关键的东西?

如果您需要一个repro项目,则可以找到它here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)