通过RSS服务实现手机消息推送


搭建了RSS服务!

虽说RSS现在已经没人用了2333,不过其实还是挺有用的
IFTTT是一个网络自动化神器,它可以把网络服务组织起来,相互打通,并按照我们自己的想法去工作,具体介绍我就不复制粘贴了

总之,IFTTT支持RSS,于是我就可以利用IFTTT和RSS来实现手机上的消息推送功能

关于C#生成RSS的方法,参照这个篇博客http://www.cnblogs.com/tuyile006/p/3710305.html

昨晚折腾了好久,IFTTT总是提示RSS的格式不对,缺少什么Feed Title啥的,但是我生成的RSS的XML中是存在这个字段的
后来Postman请求了一下发现,我的xml declaration中的Encoding居然是UTF-16,代码大致如下
var items = new List();
feed.Items = items;
foreach (var item in resultList)
{
items.Add(dbEntity2RssEntity(item)); }
StringBuilder sb = new StringBuilder(); XmlWriter xmlWriter = XmlWriter.Create(sb); feed.SaveAsAtom10(xmlWriter); xmlWriter.Close();

XmlWriter有个Encoding属性的,不过设置了并没有什么卵用,其实是这样的,XmlWriter会根据输出对象的类型来自动设置Encoding,如果输出到文件的话指定编码当然是有用的
但是如果输出到StringBuilder的话,StringBuilder内部当然是统一的Unicode内码即UTF-16

知道原因后可以开始解决了,简要代码如下
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(sb.ToString());
XmlDeclaration xmldcl = xmlDoc.FirstChild as XmlDeclaration;
if (xmldcl != null)
{
	xmldcl.Encoding = "UTF-8";
}

return new XmlResult.XmlResult(xmlDoc.InnerXml, typeof(string));
搞完编码问题后,终于可以开始设置IFTTT了,但是IFTTT提示“Feed has items without valid URLs”_(:з」∠)_
看来IFTTT还要求每个entry都必须有一个url,在这里把生成entry的代码贴上
private SyndicationItem dbEntity2RssEntity(DbResultEntity dbResult)
{
	SyndicationItem rssEntity = new SyndicationItem();
	rssEntity.Id = dbResult.id.ToString();
	rssEntity.Title = new TextSyndicationContent(dbResult.title);
	rssEntity.Content = SyndicationContent.CreatePlaintextContent(dbResult.message);
	rssEntity.PublishDate = Convert.ToDateTime(dbResult.create_on);
	rssEntity.Links.Add(new SyndicationLink(new Uri("http://www.xingkongbeta.com")));
	return rssEntity;
}

最后,万事俱备只欠IFTTT
打开IFTTT,进入My Applets,新建一个Applets
if this then that
this选择rss服务,地址填入www.xingkongbeta.com/rss
if this then that
that选择Notifications,按自己喜好填一个消息标题,如:来自XingKongBeta的新消息 EntryTitle : EntryContent
不要忘记点保存

收工!

在Windows Server 2012上配置VPN服务


记录一下配置步骤

1、在 服务器管理器中 点击 添加角色和功能
2、省略几个下一步……
3、在 服务器角色里 选上 远程访问
4、在 功能 里选上 DirectAccess和VPN、路由 两项
5、省略等待和安装过程……
6、Win+x打开 计算机管理
7、在 路由和远程访问 中选择本地服务器,右键 配置并启用路由和远程访问
8、在向导中选择 自定义配置
9、勾选 VPN访问 和 NAT
10、完成后,在本地计算机名称上右键,属性
11、选择IPv4,勾选 静态地址池,点添加
12、填入起始和结束地址,如192.168.100.100~192.168.100.254
13、在IPv4的静态路由上右键,新建静态路由
14、目标和掩码都填0.0.0.0,网关填本机上网的实际网关,注意 接口 选择本机实际上网的网卡
15、在DHCP中继代理上右键,新增接口,选择本机实际上网的网卡
16、在NAT上右键,新增接口
17、勾选 公用接口连接到Internet 和 在接口上启用NAT
18、在计算机管理中选择 本地用户和组
19、新建一个用户,步骤略
20、新建完用户后在用户上右键,属性
21、在 拨入 选项卡中,网络访问权限中选择 允许访问,点确定

然后就完事儿了

如果在客户端上拨号不成功,则在VPN连接上右键,安全选项卡下,选择 允许使用这些协议,都钩上。
如果提示错误800,则恭喜你,被阿里云的防火墙坑到了,说明规则没配好,除了入站规则外,出站规则也要允许才行。

以上!

个人博客搭建日志(15)

网站备案通过啦!

个人博客搭建日志(14)

正在研究Memcached

点此向缓存中插入一个10秒后过期的对象(已失效)

点此将该对象取出(已失效)

个人博客搭建日志(13)


添加了“载入中”的提示框!

因为服务器内存小, 长时间不查库的时候,MySQL会打瞌睡,然后就会很慢……

等网站架构稳定下来,我打算把Windows Server的GUI关了,再禁用虚拟内存,那样应该就不卡了
∠( ᐛ 」∠)_

个人博客搭建日志(12)

现在这些日志都是从数据库中检索出来的了!

前后台的分页查询功能也弄好了。

接下来该捣鼓啥呢(摸鱼预定

个人博客搭建日志(11)

数据丢失……

个人博客搭建日志(10)

POST请求带参数

点此从数据库查询ID为1的文章(已失效)

个人博客搭建日志(9)

正在研究Entity Framework

点此从数据库查询所有用户(已失效)

个人博客搭建日志(8)

学习Entity Framework时遇到个问题,记录下来。

在EF中更新模型的时候出错,提示:“TableDetails”中列“IsPrimaryKey”的值为DBNull。

解决方法如下,打开service.msc,重启MySQL服务

再在MySQL控制台中输入如下命令

use <<database name>>;
set global optimizer_switch='derived_merge=OFF'