半解TextBox靈異事件背後神祕的深度靈異事件

TextBox靈異事件:
 
就在前幾天,當我來到當下所在的網絡時,查看微博粉絲精靈後臺時,一件很靈異的事情發生了:TextBox變小了,究竟有多小?我給大夥截一下當前網絡下博客園後編輯框:
 
看到了吧,摘要變小了,當時的第一反應是,神馬情況?趕緊訪問本地的後臺,發現正常,難道,******了?趕緊再上傳覆蓋一次,情況還是一樣。
這讓我很糾結,趕緊讓另一個有權限的弟兄訪問看一下,對方說正常,OH,正常就好,免的自己嚇自己,正常就是這個框應該很大,有寬度和高度,由於近兩天折騰秋色園深度優化比較忙,因此忽略了一下這個事件。
之後回到老地方上網,也是正常的,更是忘了這問題,今天再度回到這網絡,發現還是變小了,剛好有點空,於是開始追尋這問題的根源。
 
爲了更簡單清晰的說清靈異本質:TextBox靈異事件二度解析:
 
ASPX頁面上原始TextBox代碼:
<asp:TextBox ID="txtSql" runat="server" Height="298px" TextMode="MultiLine" Width="97%"></asp:TextBox>
 
正常應該生成的html,有style帶有寬和高:
<textarea name="txtSql" rows="2" cols="20" id="txtSql" style="height:202px;width:97%;"></textarea>
 
靈異時卻生成的html,style不見了:
<textarea name="txtSql" rows="2" cols="20" id="txtSql"></textarea>
 
於是,結果就是如上圖的那麼小。
 
恰逢秋色園QBlog優化告一小段落,於是騰出點時間出來追蹤一下原因:
 
方法一:基礎排除法靈異本質
 
1:首先:排除電腦系統環境因素
由於個人帶着筆記本兩邊走,因此基本上排除是電腦的差異引發的問題。
 
2:其次:排除網絡差距化因素[這個很神祕]
由於在舊所訪問是正常的,因此,我一反應是設置代理訪問。
所先尋找到國內代理IP:通過代理“北京”IP訪問,問題依舊。
由於服務器在國外,因此找了國外的代理“美國”IP試了訪問,問題仍依舊。
 
到這裏就很糾結,感覺相當的神祕了,究竟是什麼,造成了這麼靈異的事件???神祕神祕特神祕!!!
 
方法二:源碼追尋法:直擊TextBox源碼,試圖找出問題根源:
 
既然最原始的問題來源於TextBox,看下其源碼有啥特別沒有先:
 
打開了Reflector,F3搜索TextBox,由於問題是style的寬和高沒出來,因此追尋寬和高兩個屬性。
 
掃了一下TextBox,自身並沒有寬和高屬性,兩個屬性繼承其基類WebControl的,直接查看Width屬性源碼:
[DefaultValue(typeof(Unit), ""), WebSysDescription("WebControl_Width"), WebCategory("Layout")]
public virtual Unit Width
{
    get
    {
        if (!this.ControlStyleCreated)
        {
            return Unit.Empty;
        }
        return this.ControlStyle.Width;
    }
    set
    {
        this.ControlStyle.Width = value;
    }
}
 
發現只有!this.ControlStyleCreated時,纔會返回Unit.Empty,因此自然的就點進ControlStyleCreated:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false), WebSysDescription("WebControl_ControlStyleCreated"), EditorBrowsable(EditorBrowsableState.Advanced)]
public bool ControlStyleCreated
{
    get
    {
        return (this.controlStyle != null);
    }
}
 
只有一行this.controlStyle,很自然又點擊controlStyle進去,這一點,一看,我震精了:
 
這麼一個大“SB”在我眼前,弄的我都不好意思看下去了。
於是草草掃了幾眼,見通篇屬性都是用ViewState保存着,似乎與ViewState有着某種聯繫,於是調整界面相關的ViewState開啓又關閉,升級又覆蓋,結果仍是一樣。
 
由於源碼過多,又無法調試,加之一堆“特性”和我正負極相坼,於是另尋方法。
 
方法三:網絡請求模擬攔截追尋問題:
 
由於最新習慣了原始的抓包比較,於是打開了Fiddler,直接構造一個請求訪問本機:
 
這一訪問不得了,竟然出現了和服務器一樣的靈異事件,文本框返回的style屬性不見了。
 
由於之前用瀏覽器訪問是正常的,於是的直接攔截瀏覽器對本機的請求,發現是正常的有style屬性,通過比較,唯一的區別竟然是在“User-Agent”這個屬性上。
 
於是,通過多次反覆證實,TextBox竟然會和“User-Agent”扯上關係。
而且這關係又很靈異,不是判斷User-Agent有沒有,而是隨意造一個假的User-Agent,也是顯示不出來的style屬性的。
再經過多次試驗證實,其生成的style屬性的樣式,基本上都有“User-Agent”扯上關係,不僅如此,博客園後臺的編輯器也出不來
 
靈異事件到此,終於截到最本質的答案了,前後花了兩個小時差不多,當然,靈異的背後,User-Agent和TextBox屬性的輸出,究竟有着何種深度的關係?時間太晚了,就保留到下次再研究了。
 
靈異事件再次升級:
 
既然發現了“User-Agent”是神祕的主宰,那麼,本機發出的請求,究竟發生了什麼事情?
由於Fiddler只能攔截從本機發出的請求頭,然後這個請求頭到達服務器的過程,究竟發生了什麼事情?
 
爲了追尋這個問題,我在服務器直接設置了把發過來的請求頭直接輸出,這個一輸,嚇偶一大跳:
Mozilla/4.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.11)
 
本機所有瀏覽器發出的請求,到達服務器,全是這個請求頭!!!!!!
 
竟然還是zh-TW,臺灣?這是神馬情況?網絡被***攔截了?這個,地球也太危險了吧!!!
 
留下這未解之迷,該睡了。。。。。。
 
以上文章寫於凌晨四點半,這個可以見首發文章地址:http://www.cyqdata.com/cyq1162/article-detail-53227
 
今天正想打10086問下看看有沒有頭緒,再次訪問服務器,查看,暈了,恢復正常了!!!請求頭也恢復正常了。
 
難道是我發佈的文章被“神祕***”發覺了,於是故意恢復的?
如果只是一瞬間的問題,爲何持續的時間,從前幾天就開始,就到凌晨我發現問題到寫完文章,睡一覺就恢復了???
再多的巧合,也解答不了這深度的迷惑,只好留下一些疑問,讓過客解答。。。
 

本文出自 “路過秋天” 博客,請務必保留此出處http://cyq1162.blog.51cto.com/2127378/753858

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章