微信 js sdk C# 版 invalid signature 问题解决

采用Senparc.Weixin SDK


服务器端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Senparc.Weixin.MP.CommonAPIs;
using Senparc.Weixin.MP.Helpers;
using Senparc.Weixin.Exceptions;

namespace Stock.weixin
{
    public partial class wxShare : System.Web.UI.Page
    {
        public string timestamp = string.Empty;
        public string nonceStr = string.Empty;
        public string signature = string.Empty;        
       
        private string appId = "wx9a46bbc1613c1b6b";
        private string secret = "1234567890"; 

        protected void Page_Load(object sender, EventArgs e)
        {
            string ticket = string.Empty;            
            timestamp = JSSDKHelper.GetTimestamp();
            nonceStr = JSSDKHelper.GetNoncestr();
            JSSDKHelper jssdkhelper = new JSSDKHelper();

            try
            {                
                ticket = JsApiTicketContainer.TryGetTicket(appId, secret);
                signature = jssdkhelper.GetSignature(ticket, nonceStr, timestamp, Request.Url.AbsoluteUri.ToString());
                
            }
            catch (ErrorJsonResultException ex)
            {
                Common.GetInfo.WriteLog("errorcode:" + ex.JsonResult.errcode.ToString() + "   errmsg:" + ex.JsonResult.errmsg);                
            }            
        }        
    }
}


前端页面


出现错误后,用官方校验signature工具http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign检验签名算法无误。官方说生成签名的url容易会导致invalid signature,因此url就用Request.Url.AbsoluteUri.ToString()代替,而问题依旧。

上面js代码原来是放在一个js文件中,后来把wx.config剪切出来放在页面上,问题就解决了。


你可能感兴趣的:(ASP.NET,C#)