我已经创建了一个新的格式化程序来处理内容协商。
public TiffImageFormatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("image/tiff"));
}
public override bool CanReadType(Type type)
{
return type == typeof(byte[]);
}
public override bool CanWriteType(Type type)
{
return type == typeof(byte[]);
}
但是在跑步时
var negotiator = Configuration.Services.GetContentNegotiator();
var type = negotiator.Negotiate(typeof(byte[]), Request, Configuration.Formatters);
不支持支持的媒体类型" CanWritetype"是决定使用什么接受类型的唯一条件。
接受:image / *,image / png,image / tiff,* / *应该会产生image / tiff但是 接受:image / png应返回null,允许我发送不可接受的内容。
如何确定哪种媒体类型正确?
答案 0 :(得分:1)
您需要使用MediaTypeFormatter.MediaTypeMappings
并添加相关的Accept
标题:
public TiffImageFormatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("image/tiff"));
MediaTypeMappings.Add(
new RequestHeaderMapping("Accept", "image\tiff",
StringComparison.OrdinalIgnoreCase,
false, "image\tiff"));
}
如果您需要任何进一步的信息,此blog post解释了媒体类型匹配的算法。