BufferedMediaTypeFormatter HttpContent不包含请求

时间:2015-11-05 09:11:35

标签: asp.net asp.net-web-api2 owin

在我的Owin Self托管的Web Api项目中,我正在尝试构建一个继承自custom MediaTypeFormatter的{​​{1}}。 但问题是传递到BufferedMediaTypeFormatter的{​​{1}}对象不包含请求中发送的所有标头。

如何访问请求中发送的所有标头(我知道这是因为我提出了请求),或访问HttpContent方法中的原始ReadFromStream(..)

这种接缝是一个主要的错误,我想不出为什么没有提供所有HttpRequestMessage标题的原因。

1 个答案:

答案 0 :(得分:-1)

听起来像ASP.NET Request对象没有公开您要查找的特定标题字段名称的属性。

所以看起来首先,您需要请求并执行此操作,您可能可以覆盖GetPerRequestFormatterInstance

How do I retrieve the HTTP request method in an ASP.NET WebAPI MediaTypeFormatter?

获得请求对象后,您可以搜索您要查找的特定标题字段名称,如下所示:

IEnumerable<string> headerValues = request.Headers.GetValues("MyHeaderFieldName");
var id = headerValues.FirstOrDefault();

如果需要,您还可以获得原始请求:

Request.InputStream.Position = 0;
var input = new StreamReader(Request.InputStream).ReadToEnd();