在我的Owin Self托管的Web Api项目中,我正在尝试构建一个继承自custom MediaTypeFormatter
的{{1}}。
但问题是传递到BufferedMediaTypeFormatter
的{{1}}对象不包含请求中发送的所有标头。
如何访问请求中发送的所有标头(我知道这是因为我提出了请求),或访问HttpContent
方法中的原始ReadFromStream(..)
?
这种接缝是一个主要的错误,我想不出为什么没有提供所有HttpRequestMessage
标题的原因。
答案 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();