【微信】.NET下微信接入的服务器配置
本帖最后由 李维强-15级 于 2016-12-12 00:06 编辑MVC下面 我页面这么写,
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%Response.Write("abc"); %>
我想达到的目的是让整个页面就返回abc即可,
但是我用浏览器访问这个页面 显示这样的
<html>
<head></head>
<body>abc</body>
</html>
有不有办法让页面返回后 去掉那些html标签
该问题的由来是我在配置微信公众号的时候遇到的问题,微信公众号的接入时候,微信需要验证我服务器的反馈信息,所以我需要些个页面,配合微信调用我的服务器页面
具体要求是来自微信接入指南https://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
也就是说 ,微信要通过传参数到我页面里面来,然后我需要加密一下,然后再把验证后的参数回传给微信。
本帖最后由 李维强-15级 于 2016-12-12 00:09 编辑
解决办法,在MVC里面不需要写页面出来,因为按照路由规则,实际上是访问到了control层下面某一个actionResult,然后我在这个里面把需要加密的东西写上去就行了;
整个代码如下
在control层下面新建立一个控制器,然后写如下代码
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
{
//微信接入服务器地址 直接写http://X.X.X.X/WxRequest/ServerToken_2 ;代码里面的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.ToString() + paramList.ToString() + paramList.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.ToString()+paramList.ToString()+paramList.ToString());
if (signature == MySignature)
{
return Content(echostr);
}
else
{
return Content("This Reque Not From Wx");
}
}
}
}
以下是用到的嘻哈加密算法
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();
}
}
}
页:
[1]