项目中用了AjaxPro,这个控件前台调用后台方法很方便,但出现一个问题,调试时可以使用,部署发布后不能用,原来IIS6和IIS7下web.config配置不同
例如下面这句:
OBSetting_frmOBCallPlanList.FindTable(actionval,IsOpen);
一直提示OBSetting_frmOBCallPlanList未定义,跟踪了下发现是部署的环境没有生成预定的js文件
在iis6中,web.config的配置为:
<location path="ajaxpro">
<system.web>
<httpHandlers>
<add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro" />
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="AjaxPro.AjaxHandlerFactory,AjaxPro" />
</httpModules>
<!--
If you need to have Ajax.NET Professional methods running on the
login page you may have to enable your own authorization configuration
here.
-->
<!--
<authorization>
<deny users="*"/>
</authorization>
-->
</system.web>
</location>
在iis7下,把以上代码删除
改成一下代码即可
<system.webServer>
<directoryBrowse enabled="true" />
<handlers>
<add name="ajaxpro" verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro" />
</handlers>
</system.webServer>
应用程序池不需要改成Classic .NET AppPool
其实就是IIS6环境,这句<add name="ajaxpro" verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro" />
要放在 <system.web>
<httpHandlers>节点下,而II7环境却要放在<system.webServer>
<handlers>节点下