AJAX新版本引起的浮动登录框失效
上回说到AJAX RC1有个完全编译之后无法正常工作的bug,而且对于日期函数重写也没写好,导致我们站点上有在线克服脚本的页面都会提示脚本出错。上周六特意跟微软AJAX组的开发人员又要了个Preview预览版。
更新之后原先出现的问题基本上都已经解决了,可是却又出来了一个新的问题,就是客户端登录脚本执行出错,调用Sys.Services.AuthenticationService.Login时提示“The server method ‘Login’ failed.”,导致的后果就是浮动登录框目前无法工作了。
开始还以为是配置文件没写对,仔细跟AJAX自带的配置文件对照了一下,没发现有什么地方写错了,而且先前一直都是正常的。还把AJAX Control Toolkit里的Debug也都注释了,依然不行。只好去翻翻他自带的例子了,还正找到了一个也是调用这个函数的例子。
这个自带的例子在AJAX Samples Applications\TaskList\0_Login.aspx里,把他原来的代码稍微改了一下,以显示出错时的详细信息。
<script type="text/javascript">
function Login()
{
Sys.Services.AuthenticationService.login(
aspnetForm.user.value,
aspnetForm.pwd.value,
true,
/*customInfo*/null,
'1_ListOfTasks.aspx',
null,
FailedCallback);
}
function FailedCallback(error, userContext, methodName)
{
alert(error.get_message());
}
</script>
然后执行时,果然也出来了这个一模一样的提示。
后来用Nikhil的WebDevHelper看了一下,点登录时提交的请求是/Authentication_JSON_AppService.axd/Login,服务器返回的却是http 404,估计是新的AJAX System.Web.Extensions.dll没处理Authentication_JSON_AppService.axd,虽然在web.config中已经做了http handler设置。