0
我正在使用System.Net.Http.HttpClient
與後端MVC4應用程序中的RESTful服務交談。根據提出請求的用戶,身份驗證標頭與RESTful服務的通信會有所不同,因此應該爲每個用戶緩存標頭中設置的值。這些值在會話的整個生命週期中可能會更改。.NET MVC HttpClient生命週期
我正在使用StructureMap for DI。有些問題:
- 根據this聽起來應該有HttpClient的的所有請求的單個實例。雖然some say直接注入HttpClient可能是一個壞主意,因爲它是IDisposabe,others say它沒有必要處置它。那麼,注入HttpClient的最佳方法是什麼?
- HttpClient的單個實例可能會在運行期間被丟棄或失效(可能是REST服務器重新啓動)?如果是這樣,那麼我認爲沒有選擇直接注入HttpClient,它必須包裝在一個管理器類中,該類將檢查HttClient實例是否有效,並在出現問題時實例化新客戶端。問題是我沒有看到一種方式進行測試。
- 哪裏是緩存用戶特定認證頭信息的最佳位置?我不認爲從控制器傳遞信息到服務層是乾淨的,因爲它似乎是suggested here,所以我認爲HttpSession在數據層中的注入對象範圍是這裏的方式,但是會愛上聽取其他想法。
你究竟如何創建/注入單身HttpClient - 裸體或與一些經理/包裝?關於設置auth頭文件,我正在詢問在構建頭文件值時將用於存儲/緩存用戶信息的位置。在我的情況下,它是授權標題,但可以應用於每個用戶在每個請求上需要提交的任何內容。 – Alex
我想我需要澄清的是,傳遞給標題的用戶信息將在每個新會話開始時確定。我會更新我原來的問題。 – Alex
@Alex我會嘗試使用HttpClient裸體。包裝HttpClient可能會很痛苦。 –