AjaxPro在本地工作,但在服务器上我得到.ashx错误

时间:2009-02-09 20:10:27

标签: ajaxpro

本地我的应用程序使用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>

7 个答案:

答案 0 :(得分:9)

要使AjaxPro.dll在IIS7中工作,您应该将应用程序池的PipelinMode设置为Classical而不是Integrated。

我到处都试图找到这个,但最后这就是救了我的。

答案 1 :(得分:5)

要在集成模式而不是经典模式下在IIS7(即Windows Vista)上运行Ajax.NET,您需要检查两件事:

  1. 首先检查IIS_ISSRS组是否可以访问您的网站文件夹。如果您使用Visual Studio .NET 2005网站的默认文件夹,最简单的方法是在C:\ Users \ Username \ Documents \ Visual Studio 2005 \ WebSites中添加读取权限。
  2. 运行以下命令以自动迁移您的web.config文件:   %windir%\ system32 \ inetsrv \ Appcmd migrate config“”
  3. 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的引用

希望这有用!