.Net 1.1 sp1 没有安装导致的MagicAjax无法正常运行

今天尝试了一下agicAjax,碰上了一些奇怪问题,经过反复尝试,总算解决。

问题是这样的,先从官方网站下载MagicAjax for .Net1.1 release 0.3.0 版,在本机解压,导入vs2003,写一个简单的例子,访问本机的web,没有任何问题。

但是当把程序拷贝到服务器上后,问题出现了,ajax表现异常,似乎总是在初始状态和最后状态之间变化,也就是,好像程序无法保存中间状态。

打开MagicAjax 的 Trace功能,截取到的Trace信息如下

Ajax Call invoked at 11:30:07
Page Store Mode: NoStore
Form Data sent to server (372 characters):
------------------------------

__EVENTTARGET=ddl
__EVENTARGUMENT=
__AJAXCALL=true
__CONTROL_FINGERPRINTS_AjaxPanel1=C11EB92C;ddl#7EBA2C8E;txt#C13D366C
__MAGICAJAX_SCRIPT_FINGERPRINTS=9F6D981;F24DF458;1A6D8953;C44C875E
__VIEWSTATE=dDwtOTQwMzA0NjQ4O3Q8O2w8aTwxPjs%2bO2w8dDw7bDxpPDE%2bOz47bDx0PDtsPGk8MT47PjtsPHQ8dDw7O2w8aTwwPjs%2bPjs7Pjs%2bPjs%2bPjs%2bPjs%2bFXv9KvziPMm6c5iUDTQz7gMm3nk%3d
ddl=
你是?????
txt=
------------------------------
Waiting response from server.....
Server responsed at 11:30:08
Javascript code received from server (54 characters):
------------------------------

AJAXCbo.SetField("txt","
你是?????");
'AJAX_LOADING_OK';
------------------------------ 

然后查看本机的Trace

Ajax Call invoked at 11:39:32
Page Store Mode: NoStore
Form Data sent to server (383 characters):
------------------------------

__EVENTTARGET=ddl
__EVENTARGUMENT=
__AJAXCALL=true
__CONTROL_FINGERPRINTS_AjaxPanel1=C11EB92C;ddl#7EBA2C8E;txt#C13D366C
__MAGICAJAX_SCRIPT_FINGERPRINTS=9F6D981;F24DF458;1A6D8953;C44C875E
__VIEWSTATE=dDwyNzExNjc2MDg7dDw7bDxpPDE%2bOz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs%2bO2w8dDx0PDs7bDxpPDA%2bOz4%2bOzs%2bOz4%2bOz4%2bOz4%2bOz5kNKUTA5tOdWeESfkt7VquRxuIpA%3d%3d
ddl=
你是?????
txt=
我是XXXXX
------------------------------
Waiting response from server.....
Server responsed at 11:39:32
Javascript code received from server (231 characters):
------------------------------

AJAXCbo.SetField("txt","
你是?????");
AJAXCbo.SetField("__VIEWSTATE","dDwyNzExNjc2MDg7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs+O2w8dDx0PDs7bDxpPDE+Oz4+Ozs+Oz4+Oz4+Oz4+Oz6ZjNOz98QT9U5wHt4K2BaaKhD92g==");
'AJAX_LOADING_OK';
------------------------------


 

问题出来了,正常的情况下,最后会有一个 AJAXCbo.SetField("__VIEWSTATE", "......")操作,而在有问题的服务器上,是没有的,而且,从返回的代码量来看,也比正常的要少很多,从上面2个Trace结果来看,正常的返回了 383 characters,而有问题的只返回了 54 characters,看来是少了返回的 VIEWSTATE,导致 ajax运行异常。

但是为什么会出现这样的情况,百思不得其解,期间还另外找了几台服务器,但是问题是一样的,难道就我的机器可以运行? 应该不是!

最后,想到是不是因为机器补丁打的不一致导致了这个问题,一查添加删除程序,发现了我的本机比服务器多打了一个Microsoft .Net Framework 1.1 Hotfix (KB886903) 的补丁。

这好办,到ms网站down下来,安装,恩?提示需要先安装 .net 1.1 sp1,原来还有这个东西没装,没问题,再down一个sp1,安装……再测试,一切ok,原来是它捣的鬼。

在网上搜了一下,好像没发现这个问题,到MagicAjax的论坛上看了一下,似乎也没人碰到这个问题,因此把它记录下来,希望对大家有所帮助。

ps 在.Net 2.0上没有发现同样的问题,看来只限于.Net 1.1。 

原文地址:https://www.cnblogs.com/oop/p/505071.html