问题:
在微信公众号中使用微信支付成功后的回调页面,在获取回调参数时出现问题。通过生成的日志文件发现报错,传进来的参数(回调页面为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