老徐的博客

老徐的博客

Friends

Work

公告

没有公告

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设置。

评论

SilentAcorn

微软AJAX开发人员确认是程序变动,需要修改配置文件

需要在HttpHandlers节中新增如下配置:

<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

修改了配置之后,现在我们站点的浮动登录框已经正常工作了

# 一月 9, 2007 11:59 上午

SilentAcorn

还有个需要额外修改的地方,就是Preview Build中只适用Release版本,所以AJAX Toolkit的代码中就无法访问debug对象了,需要把所有debug对象的代码找处理注释掉即可,不然Ajax Toolkit无法工作。

# 一月 15, 2007 11:29 上午