【经验分享】ASP.NET 的 Page_Load 执行了2次,真的!
发现问题
这是来自一位网友的提问:
本着求真务实的态度,我打开了 AppBoxPro 项目,本地调试果然发现 Page_Load 进入了两次!
其实在没测试之前,我就有了大概的方向,因为AppBoxPro是需要先登录的,莫非因为权限问题被重定向了一次,但是F12打开调试窗口,发现请求的的确确只有一个:
分析问题
之前好像也遇到过类似的问题,貌似是图片标签设了空的src属性导致的( <img src="">),网上查了一下,的确有很多人遇到这个问题。
比如这个帖子:https://www.cnblogs.com/Simcoder/archive/2011/12/01/2270256.html
但是我在页面上检查了一遍,虽然有 img 标签,但是其 src 属性都不为空!
没办法,还是调试看看参数吧,毕竟两次进入 Page_Load 总该有所不同吧,来看下请求的URL:
果然发现问题,解码后第二次的请求URL是:http://localhost:7086/default.aspx?ReturnUrl=/__browserLink/requestData/e176fc91b6574240afa3a4f0f95e9ebd?version=2&version=2
看到其中的 __browserLink 我好像突然明白了,这个不就是 Visual Studio 提供的一个工具嘛,好像是 VS2013 之后才引入的,可以让用户在VS中点击刷新按钮直接刷新相应的浏览器窗口,不过我对这玩意不感冒,从来不用过罢了。
打开页面源代码,就能看到这个请求来自何处了:
解决问题
知道问题的根源,解决起来就很简单了,这里有两个方法。
第一种方法简单粗暴,直接禁用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 请求了。
至此,问题完美解决。
不忘初心,砥砺前行!
最新文章
- 通过html和css做出下拉导航栏的效果
- JAVA 8 Streams
- navicat自动备份数据
- UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xff in position 0: illegal multibyte sequence
- poj2796 维护区间栈//单调栈
- 如何修改VPN连接的MTU,解决频繁断线和页面打不开的问题
- java中的代码块执行顺序
- mvc area区域和异步表单,bootstrap简单实例
- linux tricks 之 BUILD_BUG_ON_ZERO.
- hihoCoder 1082然而沼跃鱼早就看穿了一切 (字符串处理)
- Professional C# 6 and .NET Core 1.0 - Chapter 39 Windows Services
- NPOI给单元格加范围边框
- 2019春第八周作业Compile Summarize
- 【Boost】boost::tokenizer详解
- 让IIS7和IIS6识别PUT和DELETE请求
- python进行数据分析
- Media Session API 为当前正在播放的视频,音频,提供元数据来自定义媒体通知
- iOS数据持久化--归档
- python 集合取最大最小值
- Scratch GUI
热门文章
- 【工具】java 文本文档txt写出记录工具
- mysql开启日志查询功能
- vue的懒加载如何实现?
- 跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
- ES6_07_Symbol属性
- MagicBook屏幕频闪解决方案(Windows、MacOS)
- 爬取链家网租房图 使用ImagesPipeline保存图片
- 分组在re模块中的使用
- Linux命令及安装
- .NET多线程之线程安全,Lock(锁)、Monitor(同步访问)、LazyInitializer(延迟初始化)、Interlocked(原子操作)、static(静态)构造函数、volatile、