在开发时遇到一个问题:

  上线后提交申请微信提示"您的服务器没有正确响应token验证。。。",我查看日志发现根本就没有接收到来自微信的参数。

后来我又记录了微信请求方式和请求的字符串,想看看微信服务器到底有没有给我的服务器响应请求。结果是有的。并且通过了。

代码就添加了Request.HttpMethod和Request.QueryString没变,但不晓得怎么回事。

  1. /// <summary> 按照api说明对signature进行校验,校验成功返回参数echostr </summary>
  2. /// <returns></returns>
  3. public string CheckSign()
  4. {
  5. var httpMethod = Request.HttpMethod.ToLower();
  6. string httpString = string.Empty;
  7. if (httpMethod == "get")
  8. {
  9. httpString = Request.QueryString.ToString();
  10. }
  11. else if (httpMethod == "post")
  12. {
  13. httpMethod = Request.Form.ToString();
  14. }
  15. else
  16. {
  17. httpMethod = "请求方式不是get和post";
  18. }
  19. var strSignature = Request["signature"];
  20. var strEchostr = Request["echostr"];
  21. var strToken = "58jiancai";
  22. var strTimestamp = Request["timestamp"];
  23. var strNonce = Request["nonce"];
  24.  
  25. log4net.LogManager.GetLogger("请求方式").Info(httpMethod);
  26. log4net.LogManager.GetLogger("请求字符串").Info(httpString);
  27. log4net.LogManager.GetLogger("pram1.strSignature").Info(strSignature);
  28. log4net.LogManager.GetLogger("pram2.strEchostr").Info(strEchostr);
  29. log4net.LogManager.GetLogger("pram3.strToken").Info(strToken);
  30. log4net.LogManager.GetLogger("pram4.strTimestamp").Info(strTimestamp);
  31. log4net.LogManager.GetLogger("pram5.strNonce").Info(strNonce);
  32.  
  33. //step1:字典序排序
  34. string[] array = new[] { strToken, strTimestamp, strNonce };
  35. Array.Sort(array);
  36. log4net.LogManager.GetLogger("sort").Info(array[] + "||" + array[] + "||" + array[]);
  37.  
  38. //step2:sha1加密
  39. var strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(string.Concat(array), "SHA1").ToLower();
  40. log4net.LogManager.GetLogger("sha1").Info(strResult);
  41.  
  42. //step3:加密后的字符串与参数signature值比较
  43. if (strResult == strSignature.ToLower())
  44. {
  45. log4net.LogManager.GetLogger("result").Info("success");
  46. return strEchostr;
  47. }
  48. log4net.LogManager.GetLogger("result").Info("fail");
  49. return string.Empty;
  50. }

微信token验证源码分享(c#版)的更多相关文章

  1. Java实现身份证号码验证源码分享

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  2. android版猜拳游戏源码分享

    android版猜拳游戏源码分享安卓版猜拳游戏源码,该文件中带有安装测试包的,这个游戏源码比较简单的,现在有两个代码,一个自定义VIEW的,一个就是普通的imageView图片,游戏非常适合一些新手的 ...

  3. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  4. 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享

    记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...

  5. (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航

    (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航 首页支持微信登陆,只有第8套模板支持(endv模板),后 ...

  6. 别错过了,130+个微信小程序源码 “限时分享“

    ​里面有130+款微信小程序源码和效果图,我只放了其中几款小程序的截图,具体请看下方图片 ​ ​ ​ ​ ​ ​ ​ ​ 仿网易云音乐小程序源码 链接:https://pan.baidu.com/s/ ...

  7. 火热的线上APP的源码分享,开箱即用

    这篇文章是写给iOS的程序员或产品经理的,同样,对于入门学习iOS开发的人,也是一个很好的实战演练,因为这里分享的是一个已经上架的.拿了源码就能正常运行起来的项目. 在介绍这个项目的源码分享之前,小编 ...

  8. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  9. 3D语音天气球(源码分享)——创建可旋转的3D球

    开篇废话: 在9月份时参加了一个网站的比赛,比赛的题目是需要使用第三方平台提供的服务做出创意的作品. 于是我选择使用语音服务,天气服务,Unity3D,Android来制作一个3D语音天气预报,我给它 ...

随机推荐

  1. 解决 Github用户名 变为 invalid-email-address 问题

    解决 Github用户名 变为 invalid-email-address 问题 If the identity used for this commit is wrong, you can fix ...

  2. 通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题

    我在通过 html()获取对应节点的内容,发现一个问题,获取到的 form表单组件的内容值是初始加载的值,而不是经过用户修改后的值.例如页面加载时组件<input type="text ...

  3. P4313 文理分科 最小割

    $ \color{#0066ff}{ 题目描述 }$ 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行描述,每个格 ...

  4. Linux常用的命令(3)

    1 文件的内容显示 cat 显示全部 more: 分屏幕显示,只能向后翻 less: 分屏幕显示,可以向上翻 head:查看前n行 默认10行 tail:查看后n行 -n -f: 查看文件尾部,不退出 ...

  5. ScrollView-电影列表

    ScrollView 的使用import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Sc ...

  6. 创建React工程

    下载 main.jsBundle 包curl http://localhost:8081/index.ios.bundle -o main.jsbundle <!DOCTYPE html> ...

  7. Android中include标签的使用(打开引用布局,隐藏当前布局)

    在开发app的时候,有时候一个布局会反复用到,可以把反复用到的布局单独写一个xml文件,什么时候用到就用includ标签引入xml 下面是我写的反复用到的一个xml,里面有2个button,一个Tex ...

  8. 三元运算符,i++(先用后加) ++i (先加后用)区别

    三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”.使用这个算法可以使调用数据时逐级筛选. 表达式:“()? :”. ()中进行二元运算 ?在运算,就形成三元运算符   i ...

  9. P1613 跑路

    Luogu1613 #include<bits/stdc++.h> using namespace std; const int N=65; bool G[N][N][N]; int di ...

  10. Docker镜像的导出和载入

    https://www.cnblogs.com/lishidefengchen/p/10564765.html