重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5156|回复: 1
打印 上一主题 下一主题

[其他] 【微信】.NET下微信接入的服务器配置

[复制链接]

287

主题

668

帖子

5636

积分

学生管理组

Rank: 8Rank: 8

积分
5636
跳转到指定楼层
楼主
发表于 2016-12-7 09:45:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 李维强-15级 于 2016-12-12 00:06 编辑

MVC下面    我页面这么写,


  1. <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
  2. <%Response.Write("abc"); %>
复制代码



我想达到的目的是让整个页面就返回abc即可,
但是我用浏览器访问这个页面 显示这样的


  1. <html>
  2. <head></head>
  3. <body>abc</body>
  4. </html>
复制代码

有不有办法让页面返回后 去掉那些html标签



该问题的由来是我在配置微信公众号的时候遇到的问题,微信公众号的接入时候,微信需要验证我服务器的反馈信息,所以我需要些个页面,配合微信调用我的服务器页面
具体要求是来自微信接入指南https://mp.weixin.qq.com/wiki/8/ ... 3bcc1ce6fbc104.html
也就是说 ,微信要通过传参数到我页面里面来,然后我需要加密一下,然后再把验证后的参数回传给微信。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

287

主题

668

帖子

5636

积分

学生管理组

Rank: 8Rank: 8

积分
5636
沙发
 楼主| 发表于 2016-12-12 00:03:43 | 只看该作者
本帖最后由 李维强-15级 于 2016-12-12 00:09 编辑

解决办法,在MVC里面不需要写页面出来,因为按照路由规则,实际上是访问到了control层下面某一个actionResult,然后我在这个里面把需要加密的东西写上去就行了;
整个代码如下
在control层下面新建立一个控制器,然后写如下代码
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using HTMLTest.Tools;
using HTMLTest.SQLConn;
using System.Collections;
namespace HTMLTest.Controllers
{

	//微信接入服务器地址 直接写[url]http://X.X.X.X/WxRequest/ServerToken_2[/url]    ;代码里面的Squall001是token      
    public class WxRequestController : Controller		
    {			
        //
        // GET: /WxRequest/
        BaseDao dao = new BaseDao();//这个是自定义的加载数据库连接类的东西,为了写log日志的,不要也没得啥子
        public JsonResult ServerToken()		//这个是返回json数据的,实验证明 json返回对于微信不行,所以这个方法没得用
        {
            if (Request.QueryString["signature"] == null  || 
                Request.QueryString["timestamp"] == null    ||
                Request.QueryString["nonce"]==null  ||
                Request.QueryString["echostr"]==null
                ) 
            {
                return Json("Error,This Reque Not From WxServer",JsonRequestBehavior.AllowGet);
            }


            string signature = Request.QueryString["signature"].ToString();
            string timestamp = Request.QueryString["timestamp"].ToString();
            string nonce = Request.QueryString["nonce"].ToString();
            string echostr = Request.QueryString["echostr"].ToString();

            ArrayList paramList = new ArrayList();
            paramList.Add("Squall001");
            paramList.Add(timestamp);
            paramList.Add(nonce);
            paramList.Sort();

            Dictionary<string, object> datalog = new Dictionary<string, object>();
            datalog.Add("type", int.Parse("2"));
            datalog.Add("OpTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            datalog.Add("OpID", "0");
            datalog.Add("OpLog", "sig="+signature+"&time="+timestamp+"&non="+nonce+"&echostr="+echostr);
            dao.save("T_LOG", datalog);


            EncryptTool MyEncrypt = new EncryptTool();
            string MySignature = MyEncrypt.SHA1_Hash(paramList[0].ToString() + paramList[1].ToString() + paramList[2].ToString());
            if (signature == MySignature)
            {
                return Json(echostr, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("This Reque Not From Wx",JsonRequestBehavior.AllowGet);
            }
            //ViewData["CallBackStr"] = "aaaaaaaaaaaaa";
            //Dictionary<string, object> map = new Dictionary<string, object>();
            //map.Add("appId", "aa");
            //map.Add("jsapi_ticket", "bb");
            //map.Add("noncestr", "cc");
            //map.Add("UNIXTime", "dd");
            //map.Add("signature", "ff");
            ////return View("ServerToken");
            //string a = "abcd";
            //return Json(map, JsonRequestBehavior.AllowGet);
        }
        public ContentResult ServerToken_2()		//这个是直接返回Content的,对于微信调用,直接用这个方法即可
        {
            if (Request.QueryString["signature"] == null ||
                Request.QueryString["timestamp"] == null ||
                Request.QueryString["nonce"] == null ||
                Request.QueryString["echostr"] == null
                )
            {
                return Content("Error,This Reque Not From WxServer");
            }

            string signature = Request.QueryString["signature"].ToString();
            string timestamp = Request.QueryString["timestamp"].ToString();
            string nonce = Request.QueryString["nonce"].ToString();
            string echostr = Request.QueryString["echostr"].ToString();

            ArrayList paramList = new ArrayList();
            paramList.Add("Squall001");
            paramList.Add(timestamp);
            paramList.Add(nonce);
            paramList.Sort();


            Dictionary<string, object> datalog = new Dictionary<string, object>();
            datalog.Add("type", int.Parse("2"));
            datalog.Add("OpTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            datalog.Add("OpID", "0");
            datalog.Add("OpLog", "sig=" + signature + "&time=" + timestamp + "&non=" + nonce + "&echostr=" + echostr);
            dao.save("T_LOG", datalog);

            EncryptTool MyEncrypt = new EncryptTool();
            string MySignature = MyEncrypt.SHA1_Hash(paramList[0].ToString()+paramList[1].ToString()+paramList[2].ToString());
            if (signature == MySignature)
            {
                return Content(echostr);
            }
            else
            {
                return Content("This Reque Not From Wx");
            }
            
        }

    }
}


以下是用到的嘻哈加密算法
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
using HTMLTest.Controllers;
using System.Web.Mvc;

namespace HTMLTest.Tools
{
    public class EncryptTool
    {
        

        public string SHA1_Hash(string old_string)
        {

            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] bytes_old_string = UTF8Encoding.Default.GetBytes(old_string);

            byte[] bytes_new_string = sha1.ComputeHash(bytes_old_string);

            string new_string = BitConverter.ToString(bytes_new_string);

            new_string = new_string.Replace("-", "").ToUpper();

            return new_string.ToLower();

        }


    }
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-4-27 11:19 , Processed in 0.160484 second(s), 29 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表