Passing Autumn

The same 3 years, and some people from students to as the MVP, and I was in place, then the code to show off the autumn wind, a little sad, a little cool!

公告信息
Content is very powerful ~ ~ ~ ~ ~ ~ Do not look outside the invasion not as sharp and brother, I felt kind of sense of loss ~ ~ ~

解析TextBox灵异事件背后不为人知的秘密

灵异问题的来源:

就在前几天,当我来到当下所在的网络时,查看微博粉丝精灵后台时,一件很灵异的事情发生了:TextBox变小了。

究竟有多小?我给大伙截一下当前网络下博客园后编辑框:

看到了吧,摘要变小了,当时的第一反应是,神马情况?赶紧访问本地的后台,发现正常,难道,黑客入侵了?赶紧再上传复盖一次,情况还是一样。

这让我很纠结,赶紧让另一个有权限的弟兄访问看一下,对方说正常,OH,正常就好,免的自己吓自己,正常就是这个框应该很大,有宽度和高度,由于近两天折腾秋色园深度优化比较忙,因此忽略了一下这个事件。

之后回到老地方上网,也是正常的,更是忘了这问题,今天再度回到这网络,发现还是变小了,刚好有点空,于是开始追寻这问题的根源。

问题二度解析:

原始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>

于是,结果就是如上图的那么小。

基础排除法追寻问题的过程:

1:排除电脑系统环境因素

由于个人带着笔记本两边走,因此基本上排除是电脑的差异引发的问题。

2:排除网络差距化因素[这个很神秘]

由于在旧常所访问是正常的,因此,我一反应是设置代理访问。

所先寻找到国内代理IP:通过代理“北京”IP访问,问题依旧。

由于服务器在国外,因此找了国外的代理IP试了访问,问题仍依旧。

到这里就很纠结,感觉相当的神秘了,究竟是什么,造成了这么灵异的事件???

源码追寻法:直击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,台湾?这是神马情况?网络被黑客拦截了?这个,地球也太危险了吧!!!

留下这未解之迷,该睡了。。。。。。

Autumn Park is QBlog the official site, created by the passing autumn, based on the framework data layers developed cyqdata support multi-user, multi-language, multi-database (access, mssql, oracle), directory level url and other powerful blog system
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"

2011/12/29 4:33:56 | dev | |

  • 发表评论