本地我的应用程序使用ajaxpro工作正常,但在服务器上我似乎无法弄清楚它为什么不起作用。
使用firebug我有以下错误:
未找到GET prototype.ashx 404 未找到GET core.ashx 404 找不到ms.ashx 404
相同的代码在本地工作,所以它必须是IIS7设置吗?
编辑,我的web.config
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
也有:
<location path="ajaxpro">
<system.web>
<httpHandlers>
<add verb="POST,GET" path="*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
和
<location path="ajaxpro/prototype.ashx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="ajaxpro/core.ashx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="ajaxpro/converter.ashx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
答案 0 :(得分:9)
要使AjaxPro.dll在IIS7中工作,您应该将应用程序池的PipelinMode设置为Classical而不是Integrated。
我到处都试图找到这个,但最后这就是救了我的。
答案 1 :(得分:5)
要在集成模式而不是经典模式下在IIS7(即Windows Vista)上运行Ajax.NET,您需要检查两件事:
Ajax.NET Professional的重大变化是你必须将httpHandler(和httpModule,如果使用的话)移动到新的部分system.webServer并将httpHandler重命名为handler;接下来,您必须为处理程序添加名称属性:
<configuration>
<location path="ajaxpro">
<system.webServer>
<handlers>
<add verb="*" path="*.ashx" name="AjaxPro"
type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
</handlers>
</system.webServer>
</location>
</configuration>
答案 2 :(得分:2)
我几个小时来一直在反对这个问题,我想我可能刚刚找到了一个解决方案......而且相反,错误......令人沮丧。
在web.config,system.webServer / handlers中,可能有多个项目处理* .ashx
例如:
<add name="AjaxPro" verb="POST,GET,HEAD" path="ajaxpro/*.ashx" ...
<add name="SimpleHandlerFactory-Integrated" path="*.ashx" ...
<add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" ...
<add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" ...
如果ajaxpro条目低于这些条目,则不会使用它,因为这些条目首先匹配。
将ajaxpro
条目移到其他条目之上可能会解决问题。
我不知道为什么卡西尼不介意,但IIS7确实......
答案 3 :(得分:1)
您确定在web.config文件中正确注册了处理程序吗?
您的web.config文件中应该包含以下内容。
<location path="ajaxpro">
<system.web>
<httpHandlers>
<add verb="*" path="*.ashx"
type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
</system.web>
</location>
您还需要在Bin目录中拥有AjaxPro dll(至少对于网站而言)。
答案 4 :(得分:1)
<configuration>
<location path="ajaxpro">
<system.webServer>
<handlers>
<add verb="*" path="*.ashx" name="AjaxPro"
type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
</handlers>
</system.webServer>
</location>
</configuration>
Windows 2008 \ IIS 7默认情况下没有为使用Ajax设置axd处理程序映射,因此如果要使用Ajax并且在我们的某个Windows上,则需要将以下代码放入web.config文件中2008年主办计划。
<system.webServer>
<handlers>
<add name="Ajax" path="*.axd" verb="*" modules="IsapiModule"
scriptProcessor="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
resourceType="Unspecified"
preCondition="classicMode,runtimeVersionv2.0,bitness32" />
</handlers>
</system.webServer>
或将.dll复制到bin文件夹并尝试:
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
</httpHandlers> in <system.web>
答案 5 :(得分:0)
我只是遇到了同样的错误,但可能原因不同于你。我在一个新网站(在本地运行)上获得它,因为该网站使用的是自定义网址重写模块,但不排除.ashx!
所以我的解决方案是确保重写模块使用.ashx ...
排除路径答案 6 :(得分:0)
我将我的webform迁移到MVC 4后出现此错误(找不到ajaxpro / core.ashx 404)
我解决了将此行添加到我的app_start / routeconfig
routes.IgnoreRoute("ajaxpro/{*pathInfo}");
我的web.config不需要额外的声明,但是这个
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
当然,对我的bin文件夹中的ajaxpro.2.dll的引用
希望这有用!