C# 此资源不支持“多部分/表单数据”

C# 此资源不支持“多部分/表单数据”,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我有WEbAPI2后端 我尝试从邮递员那里发送表单数据 但是你会得到这个错误 没有MediaTypeFormatter可用于从媒体类型为“multipart/form data”的内容中读取类型为“StartWorkingDay”的对象 这是我的控制器的代码 // POST: api/StartWorkingDays [ResponseType(typeof(StartWorkingDay))] public IHttpActionResult PostStartWorkingDay(Start

我有WEbAPI2后端

我尝试从邮递员那里发送表单数据

但是你会得到这个错误

没有MediaTypeFormatter可用于从媒体类型为“multipart/form data”的内容中读取类型为“StartWorkingDay”的对象

这是我的控制器的代码

// POST: api/StartWorkingDays
[ResponseType(typeof(StartWorkingDay))]
public IHttpActionResult PostStartWorkingDay(StartWorkingDay startWorkingDay)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.StartWorkingDays.Add(startWorkingDay);
    db.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
}
当我通过原始数据发送时,一切正常

如何使其接收多部分/表单数据?

取自

应用程序/x-www-form-urlencoded

表单数据编码为名称/值对,类似于URI查询字符串。这是POST的默认格式

多部分/表单数据

表单数据编码为多部分MIME消息。如果要将文件上载到服务器,请使用此格式


使用enctype x-www-form-urlencoded,而不是postman中的表单数据

选择postman中的表单数据。添加键startWorkingDay,并在必要的函数中反序列化请求参数。而且,你完成了

代码:


似乎您正在发布错误的操作方法URL。检查您的$.ajax或$http请求,也许您只需要一个GET方法,或者您需要为ajax请求设置内容类型:application/json headerapp@TetsuyaYamamotoHave是否将HttpPostedFileBase占位符用于Web API控制器而不是MVC控制器?您需要为Web API使用HttpContext.Current.Request.Files,或者将其放入WebApiConfig.cs:config.Formatters.XmlFormatter.SupportedMediaTypes.Addnew System.Net.Http.Headers.MediaTypeHeaderValuemultipart/form data;中;。
    // POST: api/StartWorkingDays
        [System.Web.Http.AcceptVerbs("POST")]
        [System.Web.Http.HttpPost]
        [ResponseType(typeof(StartWorkingDay))]
        public IHttpActionResult PostStartWorkingDay()
        {
            var startWorkingDay = JsonConvert.DeserializeObject<StartWorkingDay>(HttpContext.Current.Request.Form["startWorkingDay"]);
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest(ModelState);
            //}

            db.StartWorkingDays.Add(startWorkingDay);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
        }


  [1]: https://i.stack.imgur.com/AF5YH.png