屏蔽微软的SignalR
去年采用ASP.NET MVC开发项目,在谷歌浏览器里调试页面的时候,发现项目在不停地请求数据,链接很奇怪:
http://localhost:63004/654c2dd725bb4401b8fc0c0a7d1312d2/browserLinkSignalR/poll?transport=longPolling&connectionToken=AQAAANCMnd8BFdERjHoAwE%2FCl%2BsBAAAABU73n5jBU0qT4THvITRjcQAAAAACAAAAAAAQZgAAAAEAACAAAABOZWYVL4mAw4MexRxGrAMANR1UsxDwcIjHIrZk3zDc3wAAAAAOgAAAAAIAACAAAADXGKc0LhwbHbjt21xezNlCKvcYewc8i2m5VK6%2BTaWLpTAAAACxsYt%2B%2FX9v7QCyFdjXzz8dz2r%2FlxWEqug6fXibToUbTgvataCyshym0QlmNVLEBl5AAAAA5EPQ4izyyIHASYi5ZCTOmtgN9WbS00h5jTuU6C8EwtHcxQ%2BBlNYfQA3kAVJjemk78q%2FrYn%2BDZNuHge7mxF8Epg%3D%3D&messageId=d-83DA592F-A%2C0%7CB%2C14%7CC%2C0&requestUrl=http%3A%2F%2Flocalhost%2FHNHY.Web%2FZHZS%2FZhanShi&browserName=Chrome&userAgent=Mozilla%2F5.0+(Windows+NT+6.1%3B+WOW64)+AppleWebKit%2F537.36+(KHTML%2C+like+Gecko)+Chrome%2F50.0.2661.102+Safari%2F537.36&tid=8&_=1464090722216
好长的一串东西,几秒就请求一次。因为我们采用了bootstrap的框架,当时我就以为是bootstrap的问题,时间紧,且懒,所以就没有去研究。
后来因为项目在IE下运行,常常会卡死,不得不优化一下,就想看看这个请求到底是咋回事。
一查才知道是微软搞的鬼。名叫 “SignalR”。
这东西干啥用的呢?
据说是我们用Visual Studio开发的时候,常常视图的源代码改了,而浏览器那边不知道,就要重新刷新一次页面,才能看到最新结果。如果我们同时打开了多种浏览器,比如谷歌啦,火狐啦,IE啦,那就好麻烦好麻烦(有多麻烦?),于是微软就贴心地在VS,自动为我们提供了这个东东,让我们能自动看到修改结果(有吗?不用刷新就能看到?)
Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket
框架。它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息。可访问其官方网站:https://github.com/SignalR/ 获取更多资讯。
我靠!微软的毛病向来就是不分使用对象,将开发者与普通用户混淆,将原本需要开发人员干预的东西掩盖起来,简单易用的外表下面是开发人员最需要理解的原理。这是造成.NET程序员入门快,但提升难,素质偏低的主要原因。
但是这个SignalR,可恶之处原不止于此。它在开发者毫不知情的情况下,强塞给他们,造成许多困扰,且毫无必要。
这个SignalR的请求是怎么来的呢?只有在打开VS情况下才会有,部署在服务器的IIS上,是没有这些奇怪的请求的。那么它的原理是怎么样的呢?
代码里是找不到痕迹的,我搜索了许多遍。
也不是IIS的问题,部署在服务器上是正常的,没有SignalR请求;在我开发机上,项目也在IIS上跑,但不开VS就没事。
其实要禁掉SignalR很容易,在VS上将 “启用浏览器链接”的打勾去掉就行了。
据说,这些自动发出去的请求,是通过module等模块实现的,在输出页面的时候,自动加上了一些JS脚本。然后这些脚本就不停地请求。
那么这些module是怎么来的?我猜测,.netframework是有一些东西可以调用控制的,VS能够调用。
我真不知道怎么形容。微软开发者的脑袋里一定是塞满了大便。“噢,快停下,你们这帮愚蠢的土拨鼠。”
屏蔽微软的SignalR的更多相关文章
- [渣译文] SignalR 2.0 系列:SignalR的服务器广播
英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...
- signalR制作微信墙 开源
微信墙 上一篇文章中已经用PHP搭建了一个微信墙获取信息的服务器,我这里使用微软的signalr搭建一个客户端,signalr是一个为开发者开发实时应用的 一个库文件,支持windows server ...
- SignalR 2.0 系列: 开始使用SignalR 2.0
这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第四篇:开始使用SignalR 2.0 原文:Getting S ...
- SignalR 2.0 系列:SignalR的服务器广播
英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...
- [渣译文] SignalR 2.0 系列:SignalR的高频实时通讯
原文:[渣译文] SignalR 2.0 系列:SignalR的高频实时通讯 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...
- [渣译文] SignalR 2.0 系列: SignalR 自托管主机
原文:[渣译文] SignalR 2.0 系列: SignalR 自托管主机 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...
- [渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0
原文:[渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP ...
- [渣译文] SignalR 2.0 系列: 支持的平台
原文:[渣译文] SignalR 2.0 系列: 支持的平台 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ASP. ...
- [渣译文] SignalR 2.0 系列: SignalR简介
原文:[渣译文] SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ...
随机推荐
- 【开发工具安装配置】MyEclipse,Tomcat,Mysql安装配置
配置步骤 注:以下路径仅供参考! 一.MyEclipse10 1. 1 破解版破解说明: (1)下载安装好Myeclipse,先不要运行. (2)打开破解工具目录下的cracker.jar文件或run ...
- Uncaught ReferenceError: 板栗 is not defined at HTMLButtonElement.onclick (view:1)
对JS传值一直以为都是随便传过去就行,直到今天遇到了中文传值的问题 中文传值不能够需要在调用的位置加 对于要传的值加单引号或者双引号 比如说下面这个样子,我这里还还记反斜杠注释 '<button ...
- 大数据学习——yarn集群启动
启动yarn命令: start-yarn.sh 验证是否启动成功 jps查看进程 http://192.168.74.100:8088页面 关闭 stop-yarn.sh
- 大数据学习——HADOOP集群搭建
4.1 HADOOP集群搭建 4.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主 ...
- HDU 5076 Memory
Memory Time Limit: 4000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 50 ...
- 洛谷P1504 积木城堡
题目描述 XC的儿子小XC最喜欢玩的游戏用积木垒漂亮的城堡.城堡是用一些立方体的积木垒成的,城堡的每一层是一块积木.小XC是一个比他爸爸XC还聪明的孩子,他发现垒城堡的时候,如果下面的积木比上面的积木 ...
- Hihocoder #1067 : 最近公共祖先·二
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中 ...
- 【HDOJ6304】Chiaki Sequence Revisited(数学)
题意:给定一个序列a,定义a[1]=a[2]=1,a[n]=a[n-a[n-1]]+a[n-1-a[n-2]](n>=3),求该序列的前n项和是多少,结果对 1e9+7 取模 n<=1e1 ...
- (二)Commonjs规范与模块化
在之前的学习中我们使用require()来引入我们需要的包,这其实就是模块化,各模块相互独立,可以通过某种方式引入别的模块.而这些引入方式都是遵循一定的规范的,这就是CommonJS规范. 一.Com ...
- RabbitMQ最佳实践
在使用消息机制时,我们通常需要考虑以下几个问题: 消息不能丢失 保证消息一定能投递到目的地 保证业务处理和消息发送/消费的一致性 本文以RabbitMQ为例,讨论如何解决以上问题. 消息持久化 如果希 ...