很慚愧,折騰了好幾天才發現問題
用的環境是 .net core 3.1 不是這個版本的(主要是指之前的版本),處理方法不一樣,不用參考
問題描述 post參數 如果在函數的聲明了,再次讀取body的時候,就會引發異常,我分析是stream 不能被多次讀取,猜的是對的
解決方法,在 startup.cs public void Configure 函數中 增加
app.Use((context, next) => { context.Request.EnableBuffering(); return next(); }); app.UseRouting();
再次讀取就好了,我用的讀取方式是
public static string GetRequestParameters2(this HttpContext context) { Stream stream = context.Request.Body; byte[] buffer = new byte[context.Request.ContentLength.Value]; stream.Position = 0L; stream.ReadAsync(buffer, 0, buffer.Length); string content = Encoding.UTF8.GetString(buffer); return content; }
當然,你的函數如果沒有參數,直接用我的方法讀取,如果是第一次讀取 buffer,也是能讀取到的
寫個破程序和破案一樣。。。