这是来自一位网友的提问:html
本着求真务实的态度,我打开了 AppBoxPro 项目,本地调试果真发现 Page_Load 进入了两次!web
其实在没测试以前,我就有了大概的方向,由于AppBoxPro是须要先登陆的,莫非由于权限问题被重定向了一次,可是F12打开调试窗口,发现请求的的确确只有一个:浏览器
以前好像也遇到过相似的问题,貌似是图片标签设了空的src属性致使的( <img src="">),网上查了一下,的确有不少人遇到这个问题。工具
好比这个帖子:https://www.cnblogs.com/Simcoder/archive/2011/12/01/2270256.html测试
可是我在页面上检查了一遍,虽然有 img 标签,可是其 src 属性都不为空!网站
没办法,仍是调试看看参数吧,毕竟两次进入 Page_Load 总该有所不一样吧,来看下请求的URL:spa
果真发现问题,解码后第二次的请求URL是:http://localhost:7086/default.aspx?ReturnUrl=/__browserLink/requestData/e176fc91b6574240afa3a4f0f95e9ebd?version=2&version=23d
看到其中的 __browserLink 我好像忽然明白了,这个不就是 Visual Studio 提供的一个工具嘛,好像是 VS2013 以后才引入的,可让用户在VS中点击刷新按钮直接刷新相应的浏览器窗口,不过我对这玩意不感冒,历来不用过罢了。调试
打开页面源代码,就能看到这个请求来自何处了:code
知道问题的根源,解决起来就很简单了,这里有两个方法。
第一种方法简单粗暴,直接禁用VS Browser Link,反正我也没用过:
第二种方法是给 VS Browser Link 放行,这个根本不须要进行身份认证,和网站的静态资源作一样的处理,修改Web.config文件:
<location path="icon"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="res"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="res.axd"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="__browserLink"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
注意,上面的 __browserLink 配置项就是咱们新增的!
搞定!
好像有点问题,既然是一个被拦截的 URL:http://localhost:7086/default.aspx?ReturnUrl=/__browserLink/requestData/e176fc91b6574240afa3a4f0f95e9ebd?version=2&version=2
为啥前面的 F12 看不到这个请求,这个不合理吧!
的确如此,既然是一个HTTP请求,就不可能逃出 F12 的监控,咱们再次运行页面,发现这个请求却原来是一个 AJAX 请求:
前面咱们使用 Doc 过滤项,天然是看不到这个 AJAX 请求了。
至此,问题完美解决。
不忘初心,砥砺前行!