November 27, 2006 Tags: ajax, asp.net
在开发机器上运行正常的一个ASP.NET站点,发布至测试服务器后出错,提示无法加载Microsoft.Web.Extensions.Design.dll。该站点使用了ASP.NET AJAX 1.0 Beta 2及ASP.NET AJAX Control Toolkit,其中AJAX Beta 2安装了core ASP.NET 2.0 AJAX Extensions和ASP.NET 2.0 AJAX Futures November CTP,Control Toolkit为1.0.61106.0版本。
问题原因
这个问题由两个原因引起:
- ASP.NET AJAX Control Toolkit引用了Microsoft.Web.Extensions.Design.dll;
- core ASP.NET 2.0 AJAX Extensions安装时,如果目标机器上安装了VS,则会安装Microsoft.Web.Extensions.Design.dll,否则不安装。
开发机器必定安装了VS,AJAX Beta 2安装目录下(默认为C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025)及GAC中有Microsoft.Web.Extensions.Design.dll。因此开发机器上跑使用了Control Toolkit的站点不会发生任何问题。而测试服务器没有安装VS,就over了。
解决方案
解决方案有两种:
- 升级ASP.NET AJAX Control Toolkit至最新的1.0.61121.0版本;该版本去掉了对Microsoft.Web.Extensions.Design.dll的(错误)引用; or
- 拷贝一个Microsoft.Web.Extensions.Design.dll至站点的bin目录。
November 13, 2006 Tags: ajax, asp.net, cache, firefox
遇到了这样一个问题:在一个asp.net页面上使用UpdatePanel(ASP.NET AJAX为Beta 2版本),当在Firefox下浏览时,如果手动刷新(refresh)页面,会出现“the state information is invalid for this page and might be corrupted.”错误。在IE下无此问题。
问题的原因:有可能为Firefox缓存了页面的JavaScript等内容,造成刷新页面后ViewState被破坏。
解决方法:显式去掉缓存。在Page_Load方法中,加入
Response.Cache.SetNoStore();
October 24, 2006 Tags: ajax, asp.net, atlas, pagemetods
今天安装了ASP.NET AJAX 1.0 Beta(见微软发布ASP.NET AJAX 1.0 Beta版),并把一个用到Atlas CTP的项目进行了修改与迁移。迁移并不复杂,只要照着Migration Guide(Doc格式)做就行了。
当然也发现了一些问题。最令人意外的是PageMethods不能正常使用了,这应该是Beta的一个BUG。要正常使用PageMethods,请:
- 给要使用的方法加上 Microsoft.Web.Script.Services.ScriptMethod 修饰;
- 该方法必须为public和static的;
- 该方法不能直接使用当前page的controls;
- 该方法不能放在codebehind文件中,而是必须放在aspx文件中(真变态,这应该是BUG的源头,前3个都是PageMethods的正常要求)。
给个例子:
<script runat="server“>
[System.Web.Services.WebMethod]
[Microsoft.Web.Script.Services.ScriptMethod]
public static string HelloWorld()
{
return “hello world“;
}
</script>