.net core 在服務器端獲取api傳遞的參數


在 ActionFilterAttribute 的OnActionExecutionAsync 中使用如下代碼從流中讀取用戶參數

//從文件流中讀取傳遞測參數
            using (var ms = new MemoryStream())
            {
                context.HttpContext.Request.Body.Seek(0, 0);//將讀取指針迻到開始位置
                context.HttpContext.Request.Body.CopyTo(ms);
                var b = ms.ToArray();
                var postParamsString = Encoding.UTF8.GetString(b);
            }

 雖然以前就知道是從流中讀取,但是.net core的比較難找,找了將近兩個小時才找到從流中讀取參數的方法,關鍵是這句:context.HttpContext.Request.Body.Seek(0, 0);不然讀取的內容為空

完整代碼

public class SignValidateAttribute : ActionFilterAttribute
    {
        #region
        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <param name="next"></param>
        /// <returns></returns>
        public async override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            //從文件流中讀取傳遞測參數
            using (var ms = new MemoryStream())
            {
                context.HttpContext.Request.Body.Seek(0, 0);
                context.HttpContext.Request.Body.CopyTo(ms);
                var b = ms.ToArray();
                var postParamsString = Encoding.UTF8.GetString(b);
                await next();
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <param name="next"></param>
        /// <returns></returns>
        public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
        {
            //string dataJson = GetContextJson(context.);
            return base.OnResultExecutionAsync(context, next);
        }
        #endregion

    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM