[英]Reading response body stream resulted in an empty string
我正在使用 .netCore 3.1創建一個 RESTful API。
在這里,我嘗試修改響應正文以根據我擁有的公司用例過濾掉一些值。
我的問題是,起初我認為context.HttpContext.Response.Body
的CanRead
值是假的,因此不可讀,所以我四處搜索並找到了這個問題及其答案。
哪個
基本上將無法搜索的 stream 轉換為可以搜索的
所以我應用了答案並稍作修改以適合我的用例:
Stream originalBody = context.HttpContext.Response.Body;
try
{
using (var memStream = new MemoryStream())
{
context.HttpContext.Response.Body = memStream;
memStream.Position = 0;
string responseBody = new StreamReader(memStream).ReadToEnd();
memStream.Position = 0;
memStream.CopyTo(originalBody);
string response_body = new StreamReader(originalBody).ReadToEnd();
PagedResponse<List<UserPhoneNumber>> deserialized_body;
deserialized_body = JsonConvert.DeserializeObject<PagedResponse<List<UserPhoneNumber>>>(response_body);
// rest of code logic
}
}
finally
{
context.HttpContext.Response.Body = originalBody;
}
但是在調試的時候,我發現memStream.Length
總是0
,因此originalBody
的值是一個空字符串: ""
。 即使在執行此操作之后,響應也會成功返回(感謝finally
塊)。
我似乎無法理解為什么會這樣,這是一種過時的方法嗎? 我究竟做錯了什么? 先感謝您。
使用正在關閉 stream 嘗試
string body= new StreamReader(Request.Body).ReadToEnd();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.