簡體   English   中英

讀取響應正文 stream 導致空字符串

[英]Reading response body stream resulted in an empty string

我正在使用 .netCore 3.1創建一個 RESTful API。

在這里,我嘗試修改響應正文以根據我擁有的公司用例過濾掉一些值。

我的問題是,起初我認為context.HttpContext.Response.BodyCanRead值是假的,因此不可讀,所以我四處搜索並找到了這個問題及其答案

哪個

基本上將無法搜索的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM