带有字节数组的Ajax JSON到webapi返回“No Content-Type header”

时间:2017-05-04 16:47:46

标签: c# .net ajax asp.net-web-api

我需要使用WebAPI在单个帖子中发送图像和相关属性。作为测试,我创建了一个双属性对象,明确设置了内容类型。我收到了一个错误:

  

请求包含实体主体但没有Content-Type标头。此资源不支持推断的媒体类型“application / octet-stream”。

请求数据:

var array = new Uint8Array(arrayBuffer); // Valid byte[] of image
var testData = {
    extension: "textExtension",
    data: array
}

发布对象:

$.ajax({
        url: apiRoot + 'api/ImageTest',
        type: 'POST',
        data: testData,
        contentType: 'application/json;',
       });

Fiddler Headers:

  

POST http://localhost:56565/api/ImageTest HTTP / 1.1主机:   localhost:56565连接:keep-alive内容长度:71556 Pragma:   no-cache Cache-Control:no-cache接受: / 来源:null User-Agent:   Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如   Gecko)Chrome / 57.0.2987.133 Safari / 537.36内容类型:   应用/ JSON; Accept-Encoding:gzip,deflate,br Accept-Language:   的en-US,连接; Q = 0.8

     

延长= testExtension&安培;数据%5B0%5D = 137&安培;数据%5B1%5D = 80安培;数据%5B2%5D = 78&安培;数据%5B3%5D = 71&安培;数据%5B4%5D = 13&安培;数据%5B5 %5D = 10&安培;数据%5B6%5D = 26&安培;数据%5B7%5D = 10&安培;数据%5B8%5D = 0&安培;数据%5B9%5D = 0&安培;数据%5B10%5D = 0&安培;数据%5B11%5D = 13&安培;数据%5B12%5D = 73&安培;数据%5B13%5D = 72&安培;数据%5B14%5D = 68&安培;数据%5B15%5D = 82&安培;数据%5B16%5D = 0&安培; DAT ...... ..

返回:

  

HTTP / 1.1 415不支持的媒体类型缓存控制:no-cache Pragma:   no-cache Content-Type:application / json; charset = utf-8到期:-1   服务器:Microsoft-IIS / 7.5 Access-Control-Allow-Origin:*   X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET日期:星期四,4月4日   2017 16:36:00 GMT内容 - 长度:801

     

{“Message”:“请求包含实体主体但没有Content-Type   头。推断的媒体类型'application / octet-stream'不是   支持此资源。“,”ExceptionMessage“:”不   MediaTypeFormatter可用于读取类型的对象   来自媒体类型内容的'SurveyImage'   '应用程序/八位字节流' “” ExceptionType。 “:” System.Net.Http.UnsupportedMediaTypeException “ ”堆栈跟踪“:”   在System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent)   content,Type type,IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable 1格式化程序,IFormatterLogger   formatterLogger,CancellationToken cancellationToken)“}

测试模型:

public class SurveyImage {

    public string extension { get; set; }
    public byte[] data { get; set; }
}

0 个答案:

没有答案