locked
Difference in fully patched System.Web between windows 7 and server 2003. RRS feed

  • Question

  • User-8399339 posted

    Hi,

    We hit upon a problem where one of our projects was working when tested locally (iis7 - win7 machine) but when deployed to our dev server (iis6 - server 2003) the page no longer worked. Both machines are fully updated to .net 3.5 sp1.

    The page including some callbacks and is pretty complex. After some intense debugging I discovered the cause of the issue but would like someone else to verify if possible.

    The problem is that in windows 7 (and windows server 2008) is seems System.Web has been patched so that the embedded WebForms.js is different than WebForms.js within System.Web as included in server 2003. This was easy to see by using reflector. Both dlls have identical version numbers (2.0.0.0), as does .net (v2.0.50727).

    The difference is a single line within WebForm_CallbackComplete() - ("WebForm_ExecuteCallback(callbackObject)" has been moved to the bottom of the method). It is mentioned here http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=260892 and marked as Closed and supposedly fixed in 3.5 SP1, but we have 2 machines both with Win 2003 on and 3.5 SP1 applied, both of which don't have this fix.

    WIN 7/WIN SERVER 2008

    function WebForm_CallbackComplete() {
        for (var i = 0; i < __pendingCallbacks.length; i++) {
            callbackObject = __pendingCallbacks[i];
            if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
                if (!__pendingCallbacks[i].async) {
                    __synchronousCallBackIndex = -1;
                }
                __pendingCallbacks[i] = null;
                var callbackFrameID = "__CALLBACKFRAME" + i;
                var xmlRequestFrame = document.getElementById(callbackFrameID);
                if (xmlRequestFrame) {
                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
                }
                WebForm_ExecuteCallback(callbackObject);
            }
        }
    }


    WIN SERVER 2003


    function WebForm_CallbackComplete() {
        for (var i = 0; i < __pendingCallbacks.length; i++) {
            callbackObject = __pendingCallbacks[i];
            if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
                WebForm_ExecuteCallback(callbackObject);
                if (!__pendingCallbacks[i].async) {
                    __synchronousCallBackIndex = -1;
                }
                __pendingCallbacks[i] = null;
                var callbackFrameID = "__CALLBACKFRAME" + i;
                var xmlRequestFrame = document.getElementById(callbackFrameID);
                if (xmlRequestFrame) {
                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
                }
            }
        }
    }

    I was wondering if anyone can verify this, and more importantly know of any reason why a patch would only be applied to the latest OS versions and not via another service pack for .NET 2.0. While this might only affect a small number of users it seems odd to only patch the framework for certain OS and to not even change the version number to make the change more obvious.

    Thanks in advance.

    Wednesday, December 2, 2009 10:42 AM

Answers

All replies