2015-11-05 70 views
4

在我的Owin Self託管的Web Api項目中,我試圖構建從BufferedMediaTypeFormatter繼承的custom MediaTypeFormatter。 但問題是HttpContent對象傳遞到ReadFromStream(..)不包含請求中發送的所有標頭。BufferedMediaTypeFormatter HttpContent不包含請求中發送的所有標頭

如何訪問在請求中發送的所有標頭(我知道這是因爲我提出了請求),或訪問ReadFromStream(..)方法中的原始HttpRequestMessage

這個接縫是一個主要的錯誤,我想不出爲什麼沒有提供所有的Request標題。

+0

你可以更具體哪些標頭在HTTPContent中不可用?我試圖創建一個示例,並沒有看到任何未通過的頭。 – Guanxi

回答

-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(); 
+0

在BufferedMediaTypeFormatter中,沒有表示請求的範圍內的對象,因此所有示例都不相關。 – Kyro

+0

那麼看起來你的問題比你的出發點先行一步。你需要這樣的請求谷歌「在BufferedMediaTypeFormatter訪問請求」 –

+0

我更新了我的答案也許你可以重寫GetPerRequestFormatterInstance來獲取當前請求的請求對象 –

相關問題