重构原来的网站,Ajax实现用的是AjaxPro2,改成Asp.Net MVC3。发现AjaxPro无法正常使用,原来的代码运行在JS调试中出现XXX未定义。
好一番折腾,排除了web.config配置错误,所引用ajaxpro版本不兼容等等问题,最后跟踪调试还是没有找出问题,没办法,找来AjaxPro源代码项目引用跟踪调试。
原网站正常进入断点,MVC新站还是错误。
最后发现是没有忽略ajaxpro所生成ashx的路由。
在Global.asax.cs文件
RegisterRoutes方法
routes.IgnoreRoute("ajaxpro/{*pathInfo}");//忽略掉ajaxpro/相关路由。
解决问题
附
web.config中配置
<system.web>
<httpHandlers>
<add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="AjaxPro.AjaxHandlerFactory" path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>