我需要使用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; }
}