c#里微信支付成功后的回调页面取值问题(netcore版本问题)

问题:
在微信公众号中使用微信支付成功后的回调页面,在获取回调参数时出现问题。通过生成的日志文件发现报错,传进来的参数(回调页面为post请求)并没有按照设想的那样获取到。
并且在网上搜索了许多资料,发现自己写的并没有问题,但是就是获取不到值。后来使用Bing(搜索引擎https://cn.bing.com/)搜索了下终于找到答案,不得不说相比较百度的搜索结果来说,在专业知识上bing确实比百度要强不少(个人感觉),个人推荐需要搜索专业问题的同学可以使用一下

言归正传:
因为我使用的是vs最新版本net5.0, 所以我所遇到的支付回调页面获取参数问题其实是因为在netcore 3.0后需要增加代码:

 #region 
        //注意:如果用以下读取流的方法,.net core 3.0 以后一定要加下边那段
        //.net core 3.0以后需加下边这段,否则Stream会报错
        var syncIOFeature = context.Features.Get<IHttpBodyControlFeature>();
        if (syncIOFeature != null)
        {
    
    
            syncIOFeature.AllowSynchronousIO = true;
        }
        #endregion

        //接收从微信后台POST过来的数据
        System.IO.Stream s = context.Request.Body;
        int count = 0;
        byte[] buffer = new byte[1024];
        StringBuilder builder = new StringBuilder();
        while ((count = s.Read(buffer, 0, 1024)) > 0)
        {
    
    
            builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
        }
        s.Flush();
        s.Close();
        s.Dispose();
        _logger.LogWarning($"GetNotifyData Receive data from WeChat :{
      
      builder.ToString()}");

上面只是一段获取参数的代码
完整代码参考:https://www.cnblogs.com/sylvia-/p/12773927.html

猜你喜欢

转载自blog.csdn.net/qq_37213281/article/details/119817907