我有很長的操作,通過 Web API 呼叫。狀態碼 102 告訴我們:
用于通知客戶端服務器已接受完整請求但尚未完成的臨時回應。
僅當服務器合理預期請求將花費大量時間才能完成時,才應發送此狀態代碼。作為指導,如果一個方法處理的時間超過 20 秒(一個合理但任意的值),服務器應該回傳一個 102(處理中)回應。服務器必須在請求完成后發送最終回應。
因此,我想向客戶端回傳 102 狀態碼,然后客戶端等待有關操作結果的回應。如何在.NET 上實作它?
我讀了這個帖子:如何在 Asp.Net Web Api 中回傳 Http 102 處理?
這個執行緒有很好的解釋什么是必要的,但沒有回應。我不明白它是如何在 .NET 上實作的,而不是理論......
uj5u.com熱心網友回復:
使用 HTTP 102 要求服務器為一個請求發送兩個回應。ASP.NET(Core 與否)不支持在不完全結束請求的情況下向客戶端發送回應。任何發送兩個回應的嘗試最終都會引發例外并且無法正常作業。(我嘗試了幾種不同的方法)
這里有一個很好的討論,關于它實際上不在 HTTP 規范中,因此實際上并不需要實作它。
我能想到幾個替代方案:
- 使用 Web 套接字(一種允許來回發送資料的持久連接),例如使用 SignalR。
- 如果您的請求需要很長時間,因為它從其他地方獲取資料,您可以嘗試通過流提取該資料并通過流將其發送到客戶端。這將在數??據進入時發送資料,而不是在發送之前先將其全部加載到記憶體中。這是從資料庫流式傳輸資料到回應的示例:https ://stackoverflow.com/a/45682190/1202807
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410251.html
標籤:
上一篇:系結洗掉小數分隔符
