微信token验证源码分享(c#版)
在开发时遇到一个问题:
上线后提交申请微信提示"您的服务器没有正确响应token验证。。。",我查看日志发现根本就没有接收到来自微信的参数。
后来我又记录了微信请求方式和请求的字符串,想看看微信服务器到底有没有给我的服务器响应请求。结果是有的。并且通过了。
代码就添加了Request.HttpMethod和Request.QueryString没变,但不晓得怎么回事。
- /// <summary> 按照api说明对signature进行校验,校验成功返回参数echostr </summary>
- /// <returns></returns>
- public string CheckSign()
- {
- var httpMethod = Request.HttpMethod.ToLower();
- string httpString = string.Empty;
- if (httpMethod == "get")
- {
- httpString = Request.QueryString.ToString();
- }
- else if (httpMethod == "post")
- {
- httpMethod = Request.Form.ToString();
- }
- else
- {
- httpMethod = "请求方式不是get和post";
- }
- var strSignature = Request["signature"];
- var strEchostr = Request["echostr"];
- var strToken = "58jiancai";
- var strTimestamp = Request["timestamp"];
- var strNonce = Request["nonce"];
- log4net.LogManager.GetLogger("请求方式").Info(httpMethod);
- log4net.LogManager.GetLogger("请求字符串").Info(httpString);
- log4net.LogManager.GetLogger("pram1.strSignature").Info(strSignature);
- log4net.LogManager.GetLogger("pram2.strEchostr").Info(strEchostr);
- log4net.LogManager.GetLogger("pram3.strToken").Info(strToken);
- log4net.LogManager.GetLogger("pram4.strTimestamp").Info(strTimestamp);
- log4net.LogManager.GetLogger("pram5.strNonce").Info(strNonce);
- //step1:字典序排序
- string[] array = new[] { strToken, strTimestamp, strNonce };
- Array.Sort(array);
- log4net.LogManager.GetLogger("sort").Info(array[] + "||" + array[] + "||" + array[]);
- //step2:sha1加密
- var strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(string.Concat(array), "SHA1").ToLower();
- log4net.LogManager.GetLogger("sha1").Info(strResult);
- //step3:加密后的字符串与参数signature值比较
- if (strResult == strSignature.ToLower())
- {
- log4net.LogManager.GetLogger("result").Info("success");
- return strEchostr;
- }
- log4net.LogManager.GetLogger("result").Info("fail");
- return string.Empty;
- }
微信token验证源码分享(c#版)的更多相关文章
- Java实现身份证号码验证源码分享
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- android版猜拳游戏源码分享
android版猜拳游戏源码分享安卓版猜拳游戏源码,该文件中带有安装测试包的,这个游戏源码比较简单的,现在有两个代码,一个自定义VIEW的,一个就是普通的imageView图片,游戏非常适合一些新手的 ...
- 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)
微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...
- 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享
记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...
- (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航
(https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航 首页支持微信登陆,只有第8套模板支持(endv模板),后 ...
- 别错过了,130+个微信小程序源码 “限时分享“
里面有130+款微信小程序源码和效果图,我只放了其中几款小程序的截图,具体请看下方图片 仿网易云音乐小程序源码 链接:https://pan.baidu.com/s/ ...
- 火热的线上APP的源码分享,开箱即用
这篇文章是写给iOS的程序员或产品经理的,同样,对于入门学习iOS开发的人,也是一个很好的实战演练,因为这里分享的是一个已经上架的.拿了源码就能正常运行起来的项目. 在介绍这个项目的源码分享之前,小编 ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 3D语音天气球(源码分享)——创建可旋转的3D球
开篇废话: 在9月份时参加了一个网站的比赛,比赛的题目是需要使用第三方平台提供的服务做出创意的作品. 于是我选择使用语音服务,天气服务,Unity3D,Android来制作一个3D语音天气预报,我给它 ...
随机推荐
- 解决 Github用户名 变为 invalid-email-address 问题
解决 Github用户名 变为 invalid-email-address 问题 If the identity used for this commit is wrong, you can fix ...
- 通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题
我在通过 html()获取对应节点的内容,发现一个问题,获取到的 form表单组件的内容值是初始加载的值,而不是经过用户修改后的值.例如页面加载时组件<input type="text ...
- P4313 文理分科 最小割
$ \color{#0066ff}{ 题目描述 }$ 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行描述,每个格 ...
- Linux常用的命令(3)
1 文件的内容显示 cat 显示全部 more: 分屏幕显示,只能向后翻 less: 分屏幕显示,可以向上翻 head:查看前n行 默认10行 tail:查看后n行 -n -f: 查看文件尾部,不退出 ...
- ScrollView-电影列表
ScrollView 的使用import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Sc ...
- 创建React工程
下载 main.jsBundle 包curl http://localhost:8081/index.ios.bundle -o main.jsbundle <!DOCTYPE html> ...
- Android中include标签的使用(打开引用布局,隐藏当前布局)
在开发app的时候,有时候一个布局会反复用到,可以把反复用到的布局单独写一个xml文件,什么时候用到就用includ标签引入xml 下面是我写的反复用到的一个xml,里面有2个button,一个Tex ...
- 三元运算符,i++(先用后加) ++i (先加后用)区别
三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”.使用这个算法可以使调用数据时逐级筛选. 表达式:“()? :”. ()中进行二元运算 ?在运算,就形成三元运算符 i ...
- P1613 跑路
Luogu1613 #include<bits/stdc++.h> using namespace std; const int N=65; bool G[N][N][N]; int di ...
- Docker镜像的导出和载入
https://www.cnblogs.com/lishidefengchen/p/10564765.html