var data = new { keyword1 = new { value =”参数1″ }, keyword2 = new { value = “参数2”} }; //定义模板参数内容
WxJsonResult jresult = Senparc.Weixin.WxOpen.AdvancedAPIs.Template.TemplateApi.SendTemplateMessage(
AppId, openId, templateId, data , formId, returnPage, “需要突出的内容”, “#fff00”);//小程序appid,信息接收人的OpenID,模板消息的ID,模板消息参数数据,formID(通过report-submit表单获取),返回页面路径(如:/pages/home/index),需要突出的内容,突出内容的字体颜色

            PdfSharp.Pdf.PdfDocument doc = new PdfDocument(); //实例化对象
            XImage img= XImage.FromFile(pngPath + "\\" + fileName + ".png"); //获取图片对象
            PdfPage page = doc.AddPage(); //增加1页
            page.Width = 212;
            page.Height = 269; //设置长宽            
            XGraphics g = XGraphics.FromPdfPage(page );
            g.DrawImage(img, 0, 0);

加个循环就可以一直添加新页并把图片写入pdf文件

        

        Bitmap bg = new Bitmap(500,500); //创建一个500x500px的画布
        bg.SetResolution(400, 400); //将画布设置为400x400分辨率
        Graphics g = Graphics.FromImage(bg); //新建画图对象
        g.Clear(Color.Transparent); //设置画图背景透明
        //将imgFile(通过FileDialog获取到的对象)画入画布并居中
        g.DrawImage(imgFile, (bg.Width - imgFile.Width) / 2, (bg.Height - imgFile.Height) / 2); //第二和三参数是置入图片在画布上的起始X和Y位置

 
        //设置文字
        System.Drawing.Font font = new System.Drawing.Font("思源黑体 CN", 12, FontStyle.Bold);  //设置字体
        SolidBrush brush = new SolidBrush(Color.White); //设置笔刷(写文字用)
        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;//我选择这项,可以让写出来的文字没有黑边毛刺
        //写入文字
        g.DrawString(str, font, brush, xPosition, yPosition); //参数分别为写入的文字内容,字体,笔刷,x位置,y位置
        bg.Save(pngPath+"\\"+ no + ".png",ImageFormat.Png); //保存,参数分别为保存文件路径,图片格式
        brush.Dispose();
        font.Dispose();
        g.Dispose();
        img.Dispose();
        bg.Dispose();

说难也不难,希望对各位有用

需要做一个小程序上面的短信验证功能,正常流程如下:

客户端发起发送验证码请求(post/get)—–>服务器端收到请求——>生成验证码——>保存到Session——>返回给客户端——–>客户端输入验证码并发送给服务器端(post/get)——->服务端将收到的验证码与Session的验证码匹配——->返回匹配结果

这个流程一般是没问题的,然而代码写完就懵逼了,居然服务器端读不到Session,度娘告诉我:小程序的web请求都要经过腾讯的服务器,所以2次请求对方服务器来说都是新请求,所以后面的请求读不到前面的请求。

问题来了,怎么办呢?

我想的方案1:通过sessionID获取Session,然而,C#似乎没有根据SessionID获取Session的功能(当然了,太久没摸C#所以不知道怎么获取,有哪个兄嘚知道,记得告诉我下!),所以目前放弃这个方案。

方案2:Cache,悲催的我没研究Cache(毕竟算是新手,所以不熟悉Cache,暂时也不想研究太深入),所以放弃

方案3:数据库,目前用的是这么个方案,具体思路如下:

客户端发起请求—–>服务器端收到请求—–>生成验证码——->保存到数据库(uid,mobile,scence 3个条件用于后续)——>返回客户端——>客户端输入验证码发送给服务端——>服务器端收到验证码——->数据库取值(前面的3个条件来筛选,并且最好是order倒序,只取1条)并匹配——->返回匹配结果

 

public ActionResult SomeAction()
{
try
{
var sr = new StreamReader(Request.InputStream);
var stream = sr.ReadToEnd();
try
{
JArray arrary = JArray.Parse(stream);
foreach (JObject item in arrary)
{
string[] pars = item[“content”].ToString().Trim().Split(‘ ‘);
}
}
catch (Exception e)
{

}
}
catch (Exception e)
{

}
return new JsonResult()
{
Data = new { code = 0, msg = “接收成功” },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}

服务器的某个Action需要接收到一个json数组[{id:1,name:”abc”},{id:2,name:”hello”}],苦于不知道应该用什么参数接收,只能各种百度,最终写出了这个代码,勉强搞定这个功能了。

正常情况post过来的json数据,action都是可以自动解析的,比如给服务器post了个{id:1,name:”abc”},那么Action的声明可以这么写

public ActionResult SomeAction(int id,string name)

{

程序内可以直接调用id和name

}

在keypress程序中加入代码 e.Handled = true即可阻止文本框输入按回车后发出的警报音

 

使用 Console.Beep()可以让程序发出警报声,其中有1个加载方法:

Console.Beep(800,200)  第一个是发出的警报声的频率,默认值就是800,第二个参数是声音持续的时长,默认值是200

也就是说 Console.Beep() == Console.Beep(800,200)

通过改变第一个参数可以控制警报音的声色,通过第二个参数可以修改警报声的长短!