去年采用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的更多相关文章

  1. [渣译文] SignalR 2.0 系列:SignalR的服务器广播

    英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...

  2. signalR制作微信墙 开源

    微信墙 上一篇文章中已经用PHP搭建了一个微信墙获取信息的服务器,我这里使用微软的signalr搭建一个客户端,signalr是一个为开发者开发实时应用的 一个库文件,支持windows server ...

  3. SignalR 2.0 系列: 开始使用SignalR 2.0

    这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第四篇:开始使用SignalR 2.0 原文:Getting S ...

  4. SignalR 2.0 系列:SignalR的服务器广播

    英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广 ...

  5. [渣译文] SignalR 2.0 系列:SignalR的高频实时通讯

    原文:[渣译文] SignalR 2.0 系列:SignalR的高频实时通讯 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...

  6. [渣译文] SignalR 2.0 系列: SignalR 自托管主机

    原文:[渣译文] SignalR 2.0 系列: SignalR 自托管主机 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...

  7. [渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0

    原文:[渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP ...

  8. [渣译文] SignalR 2.0 系列: 支持的平台

    原文:[渣译文] SignalR 2.0 系列: 支持的平台 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ASP. ...

  9. [渣译文] SignalR 2.0 系列: SignalR简介

    原文:[渣译文] SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ...

随机推荐

  1. ruby on rails全局布局,局部视图,局部布局

    参考链接:http://guides.ruby-china.org/layouts_and_rendering.html#%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E6 ...

  2. jquery ajax示例

    $.ajax({ type: "POST",//方法类型 dataType: "json",//预期服务器返回的数据类型 url: "${ctx }/ ...

  3. pwnable.kr lotto之write up

    源代码 : #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcnt ...

  4. 基于 NodeJs 打造 Web 在线聊天室

    Socket.IO 简介与基础环境搭建 任务时间:10min ~ 20min 关于 Socket.IO Socket.IO 可以实现在浏览器和服务器之间实时双向通信,本节课程将详细介绍 Socket. ...

  5. c++ 十进制转二进制 代码实现

    我初中的时候就没搞清楚手动怎么算二进制 写这个代码的时候研究了好久百度 https://jingyan.baidu.com/article/597a0643614568312b5243c0.html ...

  6. 洛谷 P3387 【模板】缩点 DAGdp学习记

    我们以洛谷P3387 [模板]缩点 来学习DAGdp 1.这道题的流程 //伪代码 for i->n if(i未被遍历) tarjan(i) 缩点() DAGdp() 完成 首先tarjan这部 ...

  7. 大数据学习——修改主机名和ip的映射关系

    vi /etc/hosts 192.168.1.101 itcast

  8. Flask 架构 --xunfeng实例研究

    文件结构 │ Config.py # 配置文件 │ README.md # 说明文档 │ Run.bat # Windows启动服务 │ Run.py # webserver │ Run.sh # L ...

  9. Exact Change(01背包)

    描述 Seller: That will be fourteen dollars. Buyer: Here's a twenty. Seller: Sorry, I don't have any ch ...

  10. [luoguP2016] 战略游戏(DP)

    传送门 f[i][0]表示不选当前节点,当前节点的所有儿子节点都选f[i][1]表示选当前节点,儿子节点可选可不选 #include <cstdio> #include <cstri ...