(精華)2020年7月1日 ASP.NET Core 使用Enablebuffering多次讀取body
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
//允許body重用
app.Use(next => context =>
{
context.Request.EnableBuffering();
return next(context);
})
}
[HttpPost]
public async Task<string> Post()
{
//StreamReader sr = new StreamReader(Request.Body);
//string data = await sr.ReadToEndAsync();
string data = "";
//Request.EnableBuffering();可以實現多次讀取Body
Request.EnableBuffering();
StreamReader sr = new StreamReader(Request.Body);
data = await sr.ReadToEndAsync();
logger.LogInformation("data=" + data);
Request.Body.Seek(0, SeekOrigin.Begin);
//再次讀取 依然可以成功讀到
Request.EnableBuffering();
StreamReader sr2 = new StreamReader(Request.Body);
string data2 = await sr2.ReadToEndAsync();
logger.LogInformation("data2=" + data2);
Request.Body.Seek(0, SeekOrigin.Begin);
string header = $"請求頭:\r\n";
foreach (var item in Request.Headers)
{
header += $"{item.Key}:{item.Value}\r\n";
}
logger.LogInformation(header);
var ip = Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrEmpty(ip))
{
//ip = Request.HttpContext.Connection.RemoteIpAddress.ToString();
//ip = Request.HttpContext.Connection.LocalIpAddress.MapToIPv4().ToString();
ip = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
}
logger.LogInformation("ip=" + ip);
}
相關文章
- 多次讀取 HttpServletRequest 中 body 內容HTTPServlet
- 由ASP.NET Core讀取Response.Body引發的思考ASP.NET
- 深入探究ASP.NET Core讀取Request.Body的正確方式ASP.NET
- 如何在ASP.NET Core自定義中介軟體中讀取Request.Body和Response.Body的內容?ASP.NET
- ASP.NET Core - 配置系統之配置讀取ASP.NET
- (精華)2020年7月22日 ASP.NET Core Swagger的使用(NSwag工具版)ASP.NETSwagger
- (精華)2020年7月20日 ASP.NET Core serilog日誌框架的使用ASP.NET框架
- (精華)2020年7月1日 ASP.NET Core Swagger的使用(Swashbuckle工具版)ASP.NETSwagger
- 【原始碼解讀】asp.net core原始碼啟動流程精細解讀原始碼ASP.NET
- ASP.NET Core通過Nacos SDK讀取阿里雲ACMASP.NET阿里ACM
- (精華)2020年7月20日 ASP.NET Core log4.net日誌框架的使用ASP.NET框架
- Asp.net Core 和類庫讀取配置檔案資訊ASP.NET
- ASP.NET Core ----ASP.NET Core中使用Code FirstASP.NET
- (精華)2020年9月17日 ASP.NET Core 中介軟體詳解ASP.NET
- (精華)2020年7月21日 ASP.NET Core 容器偽屬性注入ASP.NET
- (精華)2020年7月1日 ASP.NET Core 使用靜態檔案和目錄瀏覽ASP.NET
- 小白細節思考之讀取Request.Body
- ASP.NET Core 中的快取ASP.NET快取
- ASP.NET Core檔案上傳IFormFile於Request.Body的羈絆ASP.NETORM
- asp.net core原始碼解讀ASP.NET原始碼
- (精華)2020年7月21日 ASP.NET Core 模型驗證過濾器ASP.NET模型過濾器
- (精華)2020年7月15日 ASP.NET Core EFCore分庫分表框架的使用(手寫版)ASP.NET框架
- ASP.Net Core 5.0 MVC AppSettings配置檔案讀取,Startup 類中ConfigureServices 方法、Configure 方法的使用ASP.NETMVCAPP
- Asp.Net Core 3.1學習-讀取、監聽json配置檔案(7)ASP.NETJSON
- 【ASP.NET Core】MVC模型繫結:自定義InputFormatter讀取CSV內容ASP.NETMVC模型ORM
- 關於Asp.net core配置資訊讀取的原始碼分析梳理ASP.NET原始碼
- 華為遊戲登入多次重複提醒更新HMS Core遊戲
- 在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactoryASP.NETHTTPclient
- (精華2020年6月24日更新)asp.net core3.1實戰篇 RabbitMQ的使用一(安裝Erlang)ASP.NETMQ
- (精華)2020年7月21日 ASP.NET Core 使用NewtonsoftJson替換掉預設的json序列化元件ASP.NETJSON元件
- ASP.NET Core 中使用TypeScriptASP.NETTypeScript
- (精華2020年6月24日更新)asp.net core3.1實戰篇 RabbitMQ的使用二(環境搭建和初步使用)ASP.NETMQ
- Redis 入門與 ASP.NET Core 快取RedisASP.NET快取
- 精讀《函式快取》函式快取
- ASP.Net Core5.0 EF Core使用記錄ASP.NET
- (精華)2020年7月1日 ASP.NET Core 解決跨域問題(手寫版)ASP.NET跨域
- 在ASP.NET Core中使用ViewComponentASP.NETView
- (精華)2020年9月2日 .NET Core 命令列的基本使用命令列