Updated on 5月 14, 2019
通过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
不要忘记点保存
收工!
Updated on 5月 14, 2019
在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,则恭喜你,被阿里云的防火墙坑到了,说明规则没配好,除了入站规则外,出站规则也要允许才行。
以上!
Updated on 5月 14, 2019
个人博客搭建日志(13)
添加了“载入中”的提示框!
因为服务器内存小, 长时间不查库的时候,MySQL会打瞌睡,然后就会很慢……
等网站架构稳定下来,我打算把Windows Server的GUI关了,再禁用虚拟内存,那样应该就不卡了
∠( ᐛ 」∠)_
Updated on 5月 14, 2019
个人博客搭建日志(8)
学习Entity Framework时遇到个问题,记录下来。
在EF中更新模型的时候出错,提示:“TableDetails”中列“IsPrimaryKey”的值为DBNull。
解决方法如下,打开service.msc,重启MySQL服务
再在MySQL控制台中输入如下命令
use <<database name>>;
set global optimizer_switch='derived_merge=OFF'