V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
lonelygo
V2EX  ›  JavaScript

有关 WebUIValidation.js 的一个诡异问题,求大神出手解救

  •  
  •   lonelygo · 2015-09-18 18:29:06 +08:00 · 2541 次点击
    这是一个创建于 3385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:
    在做一个 Citrix 虚拟化项目问题,在虚拟化使用过程中有用户提出有应用系统在物理机中速度正常,在虚拟化环境中登陆需要几十秒,然后就安排工程师去跟踪排查问题,最后说原因定位到了“ WebUIValidation.js ”,看了一下,确实诡异,搞不明白,求助!!!

    现象:
    1 、在物理机中登录 http 抓包如下:

    可以看到, assofflogin.aspx 之行后就开始加载图片了。
    2 、在虚机中登陆,结果就变了,在 assofflogin.aspx 之后会执行 WebUIValidation.js ,这个 js 第一次加载 90%情况下会失败,持续时间 20 秒左右。之后会出现多种可能性:
    1.1 、第一次失败后,反复尝试 3-5 次,一直失败,然后不执行 js ,直接开始加载图片;
    1.2 、失败几次后,会成功执行 WebUIValidation.js 后,加载图片;
    1.3 、极其个别的情况下 WebUIValidation.js 会一次执行通过;或者,与物理机情况一直,没有执行这个 js 。


    可以确定的就是: WebUIValidation.js 导致了在虚拟化环境中登陆慢的问题。
    最初怀疑是 WebUIValidation.js 在服务器中没有这个文件,但是在 IE 中用完整路径尝试后,是可以下载到这个 js 的,并不是 404 什么。
    所以,不明白的是:
    1 、为什么在物理机登陆不需要执行此 js ?
    2 、为什么在虚拟化环境中登陆,会出现很多的可能性,当然 js 反复执行多次后还是没有回包的情况最多;
    3 、此系统运维商找不到人,服务器在北京,现在的情况是,找不到运维的、开发的,也暂时没法接触到服务器(正在协调找人);
    4 、用户的态度是:物理机正常,虚拟化环境有问题,那就是你虚拟化的问题,你们就要排查清楚😭

    求高人指点,已经要崩溃了。

    以下是与 WebUIValidation.js 有关的代码片段:

    </HEAD>
        <body MS_POSITIONING="GridLayout" BGCOLOR="#ffffff" leftmargin="0" topmargin="0">
            <form name="index99" method="post" action="assofflogin.aspx" language="javascript" onsubmit="if (!ValidatorOnSubmit ()) return false;" id="index99">
    <input type="hidden" name="__VIEWSTATE" value="dDwtMjEzNTk2MDUwODt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxNT47PjtsPHQ8QDA8Ozs7Ozs7Ozs7Oz47Oz47Pj47Pj47bDxMb2dpbjs+Pn2zs1WO22R8mQ8wwaoOGEQS/SHk" />
    
    <script language="javascript" type="text/javascript" src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"></script>
    
    
                <TABLE WIDTH="777" BORDER="0" CELLPADDING="0" CELLSPACING="0" align="center">
                    <TR>
                        <TD colspan="3">
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
    
    2 条回复    2015-09-19 12:34:14 +08:00
    frozen2013
        1
    frozen2013  
       2015-09-19 00:19:12 +08:00
    随手搜 WebUIValidation.js ,发现这东西跟.net 相关的

    http://scottonwriting.net/sowblog/archive/2004/11/03/163009.aspx
    The WebUIValidation.js file, as you know, contains client-side JavaScript functions for client-side validation. It is automatically injected into a page when:

    The page contains one or more validation Web controls.
    The page is being visited by an “ uplevel ” browser.

    根据以上信息,这个东西是有条件加载的,我猜你遇到的问题是物理机上符合不加载的条件,虚拟环境符合加载条件但加载遇到困难。

    最好还是问写这个服务的工程师吧。
    lonelygo
        2
    lonelygo  
    OP
       2015-09-19 12:34:14 +08:00
    @frozen2013 嗯,这个 js 看名字就应该是校验用途。
    虚拟环境中如果连续刷新,会出现某一次不执行 js 的情况,也会出现 5 次执行不过去就丢弃不执行的情况。
    大多数情况是,执行 2-3 次,收到回包,执行通过。
    现在的难题在于:找不到写这个服务的码农了,运维的人都很难找到。
    如果能接触到服务器,我倒是想尝试注释了这句话看看结果。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:34 · PVG 09:34 · LAX 17:34 · JFK 20:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.