這是來自一位網友的提問: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 請求了。
至此,問題完美解決。
不忘初心,砥礪前行!