最近一些使用URLRewriting的朋友们有时候会遇到asp.net Ajax和AJAX Control Toolkit控件不能正常工作的现象,对于没有相关经验的开发者来说相当棘手。本篇通过案例分析和相对的解决方案来讨论在使用ASP.NET AJAX 与 URLRewriting 时应当注意到的一些兼容性问题。
一般简单的URLRewriting应用都是对来自客户端对资源的Request进行路径重定向,比较典型的写法如同下列代码1 和代码2:
代码1:
代码2:
然而,当我们使用上面的代码进行URLRewriting,并且在页面中使用ASP.NET AJAX 或 AJAX Control Toolkit的话,将会得到:'sys' is undefined 错误警告,而AJAX控件不能正常工作,totally not work.
很显然,'sys' is undefined 告诉我们 ASP.NET AJAX框架没有正常加载,根据分析可知,sys的定义是在脚本资源文件ScriptResource.axd中的,然而在上面的URLRewriting代码中,我们并没有对ScriptResource.axd进行特殊处理,导致该资源被重定向,没有正常加载。所以导致了ASP.NET AJAX不工作的问题。
知道了原因,我们就要修改URLRewriting的代码,为ScriptResource.axd增加一个例外:
代码1的解决方案:
在CheckPath时加入特例
代码2的解决方案:
与1同理,在IO判断时加上特例,修改如下:
至此,可解决该问题。
相关case:
http://forums.asp.net/t/1178119.aspx
http://forums.asp.net/p/1356089/2795441.aspx#2795441
Thanks.
新闻热点
疑难解答