Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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#RestSharp和ASP.NETWebAPI-上传json和文件_C#_Asp.net Web Api_Json.net_Image Uploading_Restsharp - Fatal编程技术网

C#RestSharp和ASP.NETWebAPI-上传json和文件

C#RestSharp和ASP.NETWebAPI-上传json和文件,c#,asp.net-web-api,json.net,image-uploading,restsharp,C#,Asp.net Web Api,Json.net,Image Uploading,Restsharp,问题: 如何在RestSharp中组织发送JSON和文件?如何在服务器上获取数据 protected override void SaveDoWork(object sender, DoWorkEventArgs e) { IRestResponse response; Meta meta = e.Argument as Meta; var json = JsonConvert.SerializeObject(meta, new JsonSerializerSettin

问题: 如何在RestSharp中组织发送JSON和文件?如何在服务器上获取数据

protected override void SaveDoWork(object sender, DoWorkEventArgs e)
{
    IRestResponse response;
    Meta meta = e.Argument as Meta;

    var json = JsonConvert.SerializeObject(meta, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects });
    var request = new RestRequest("api/v1/persons/save", Method.POST);

    request.AddHeader("Charset", "utf-8");
    request.AddHeader("Content-Type", "multipart/form-data");

    request.AddParameter("application/json", json, ParameterType.RequestBody);

    using (var stream = new System.IO.MemoryStream())
    {
        if (meta.Person.PersonPhotoFrontView != null)
        {
            meta.Person.PersonPhotoFrontView.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            request.AddFileBytes("PersonPhoto", stream.ToArray(), "PersonPhotoFrontView");
        }
    }


    response = this._client.Execute(request);
    if (response.ErrorException == null)
    {                

    }
    else
    {

    }
}
服务器端:在服务器端,一切都很简单。有必要单独处理JSON和接收的文件:

        [HttpPost, Route("save")]
        public object Save([FromBody] JObject meta)
        {
            Meta metaData = meta.ToObject<Meta>();

            if (metaData != null)
            {
                if (_personModel.Save(metaData, HttpContext.Current.Request))
                {

                    return new Notification("OK");
                }

            }

            return new Notification("Fail");
        }
{
    "Message": "Media Type \"multipart/form-data\" request entity for this resource is not supported",
    "ExceptionMessage": "There are no available MediaTypeFormatter read object type \"JObject\" with the contents of media type \"multipart/form-data\".",
    "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
    "StackTrace": "   в System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)rn   в System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}