国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.net core讀取Response.Body

這篇具有很好參考價值的文章主要介紹了.net core讀取Response.Body。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

讀取請求體流的demo
        public static async Task<string> GetBodyForm(this HttpContext http)
        {
            var content = string.Empty;
            var request = http.Request;

            try
            {
                request.Body.Position = 0;

                using var reader = new StreamReader(request.Body, Encoding.UTF8, leaveOpen: true);
                var strRequestBody = await reader.ReadToEndAsync();
                Console.WriteLine("ok");
                Console.WriteLine(strRequestBody == null ? "null" : strRequestBody);
                request.Body.Position = 0;
            }
            catch (Exception ex)
            {
                Console.WriteLine("err");
                Console.WriteLine(ex);
            }
            return content;
        }

在ActionFilter中讀取Request.Body

    public class ActionFilterTestA : ActionFilterAttribute
    {
        public override async void OnActionExecuting(ActionExecutingContext context)
        {
            Console.WriteLine("From Request Body---->");
            Console.WriteLine(await context.HttpContext.GetBodyForm());
            Console.WriteLine("From Request Body---->");
        }
    }

報錯,一般是在Request.Body處報NotSupportedException

解決方案

在自定義中間件中調(diào)用EnableBuffering()

    app.Use(async (context, next) =>
    {
        context.Request.EnableBuffering();
        await next();
    });

疑問

(移除以上正確方案代碼) 為什么在ActionFilterTestA中調(diào)用context.HttpContext.Request.EnableBuffering();沒有效果?(沒有報錯,但是內(nèi)容為空字符串)

猜測

請求體流在ActionFilter之前,在自定義中間件之后被消耗。 中間件執(zhí)行順序

測試

    // 取消模型綁定
    builder.Services.Configure<ApiBehaviorOptions>(options =>
    {
        options.SuppressInferBindingSourcesForParameters = true;
    });

Request.Body的內(nèi)容打印成功。

推論

綁定模型時會消耗掉請求體流。

其他資料

https://markb.uk/asp-net-core-read-raw-request-body-as-string.html

結(jié)語

推薦還是通過中間件調(diào)用EnableBuffering解決問題文章來源地址http://www.zghlxwxcb.cn/news/detail-711718.html

注意事項:

  1. 避免關(guān)閉StreamReader導(dǎo)致關(guān)閉了Stream,可以通過leaveOpen: true解決
  2. 重置Position = 0

到了這里,關(guān)于.net core讀取Response.Body的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • .NET學(xué)習(xí)筆記----關(guān)于.NET Core那些事(3)【配置文件的讀取、json文件的通用解析、讀取靜態(tài)文件】

    .NET學(xué)習(xí)筆記----關(guān)于.NET Core那些事(3)【配置文件的讀取、json文件的通用解析、讀取靜態(tài)文件】

    appsettings.json準(zhǔn)備 控制器中讀取json 定義與配置文件中需要獲取的標(biāo)簽結(jié)構(gòu)完全一致的實體類:IConfiguration .Bind() ----反序列化 要讀取的json字符串 定義的實體類 讀取json 用到的json字符串 == 用到的類 Startup.cs中的配置 控制器中的代碼 運(yùn)行結(jié)果 當(dāng)我們用《關(guān)于.NET Core那些事(2)》

    2024年02月04日
    瀏覽(22)
  • .NET Core HttpClient請求異常分析

    推送邏輯是在類庫中使用HttpClient,所以沒有使用HttpClientFactory,因此定義靜態(tài)變量來使用HttpClient,而非每一個請求就實例化一個HttpClient, 接下來我們來詳細(xì)分析項目示例代碼并對其進(jìn)行改進(jìn) 若對接方僅使用HTTPS協(xié)議,無需驗證證書,最好是忽略證書驗證,否則有可能會引起

    2024年02月03日
    瀏覽(28)
  • Asp.Net VS ASP.NET Core 請求管道

    Asp.Net VS ASP.NET Core 請求管道

    參考鏈接 ASP.NET CORE 啟動過程及源碼解讀 請求進(jìn)入Asp.Net工作進(jìn)程后,由進(jìn)程創(chuàng)建HttpWorkRequest對象,封裝此次請求有關(guān)的所有信息,然后進(jìn)入HttpRuntime類進(jìn)行進(jìn)一步處理。HttpRuntime通過請求信息創(chuàng)建HttpContext上下文對象,此對象將貫穿整個管道,直到響應(yīng)結(jié)束。同時創(chuàng)建或從應(yīng)用

    2024年02月04日
    瀏覽(100)
  • .NET Core使用 CancellationToken 取消API請求

    .NET Core使用 CancellationToken 取消API請求

    您是否曾經(jīng)訪問過一個網(wǎng)站,它需要很長時間加載,最終你敲擊 F5 重新加載頁面。 即使用戶刷新了瀏覽器取消了原始請求,而對于服務(wù)器來說,API也不會知道它正在計算的值將在結(jié)束時被丟棄,刷新五次,服務(wù)器將觸發(fā) 5 個請求。 為了解決這個問題,ASP.NET Core 為 Web 服務(wù)器

    2024年03月17日
    瀏覽(17)
  • 實時監(jiān)控.NET Core請求次數(shù):創(chuàng)建記錄最近5分鐘的請求,輕松可靠

    實時監(jiān)控.NET Core請求次數(shù):創(chuàng)建記錄最近5分鐘的請求,輕松可靠

    ? 概述: 在.NET Core中,通過創(chuàng)建RequestCountMiddleware中間件,結(jié)合MemoryCache,實現(xiàn)了記錄最近5分鐘請求次數(shù)的功能。該中間件在每個請求中更新計數(shù),并使用緩存存儲,為簡單而實用的請求監(jiān)控提供了一個示例。 要實現(xiàn)一個在.NET Core中記錄最近5分鐘請求次數(shù)的 RequestCountMiddlew

    2024年03月09日
    瀏覽(27)
  • 輕松理解Java中的public、private、static和final

    一、概念 1、public和private 兩個都是訪問權(quán)限修飾符,用于控制外界對類內(nèi)部成員的訪問。 public:表明對象成員是完全共有的,外界可以隨意訪問。用public修飾的數(shù)據(jù)成員、成員函數(shù)是對所有用戶開放的,所有用戶都可以直接進(jìn)行調(diào)用。 private:表明對象成員是完全私有的,不

    2024年02月16日
    瀏覽(25)
  • 如何在 ASP.NET Core 配置請求超時中間件

    如何在 ASP.NET Core 配置請求超時中間件

    本文參考官方文檔,使用Asp.net core 8.0 的最小API 模板項目,配置超時中間件。 超時中間件可用于所有類型的ASP.NET Core應(yīng)用:最小 API、帶控制器的 Web API、MVC 和 Razor Pages。請求超時的屬性位于命名空間 Microsoft.AspNetCore.Http.Timeouts 中。 需要注意的是,當(dāng)應(yīng)用在調(diào)試模式下運(yùn)行時

    2024年01月20日
    瀏覽(93)
  • Asp.Net Core服務(wù)端處理請求過來的壓縮格式

    ? ? ? ? 之前是直接傳沒有經(jīng)過壓縮的文件字節(jié),有時文件過大的話,可能占寬帶就多,寬帶流量都是錢。后來有個想法,在客戶端把文件進(jìn)行壓縮,把壓縮的文件流發(fā)給服務(wù)端進(jìn)行解壓。 1,先修改項目中 Startup.cs 文件中ConfigureServices()方法中的代碼: 2?,先修改項目中 S

    2024年02月06日
    瀏覽(93)
  • 【ASP.NET Core 基礎(chǔ)知識】--路由和請求處理--路由概念(二)

    一、路由參數(shù)傳遞方式 1.1 查詢字符串參數(shù) 在路由中,查詢字符串參數(shù)是一種常見的方式傳遞信息。這種方式通過URL中的查詢字符串(?key1=value1key2=value2)將參數(shù)附加到請求中。在ASP.NET Core中,可以通過以下方式在控制器動作方法中接收查詢字符串參數(shù): 在上述例子中,查詢

    2024年01月21日
    瀏覽(377)
  • ASP.NET Core如何知道一個請求執(zhí)行了哪些中間件?

    ASP.NET Core如何知道一個請求執(zhí)行了哪些中間件?

    需要添加兩個Nuget包分別是: Microsoft.AspNetCore.MiddlewareAnalysis 和 Microsoft.Extensions.DiagnosticAdapter ,前者是分析記錄中間件核心代碼實現(xiàn)后者是用來接收日志輸出的,由于是用的DiagnosticSource方式記錄日志,所以需要使用DiagnosticListener對象的SubscribeWithAdapter方法來訂閱。 這個適配器

    2023年04月09日
    瀏覽(101)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包