6

在本地,我的应用程序使用 ajaxpro 可以正常工作,但在服务器上我似乎无法弄清楚它为什么不工作。

使用萤火虫我有以下错误:

GET prototype.ashx 404 未找到 GET core.ashx 404 未找到 GET 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>
4

7 回答 7

9

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

我到处都想找到这个,但最后这救了我。

于 2009-04-10T06:20:02.777 回答
7

要在 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 ""

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>
于 2009-05-28T12:10:47.537 回答
2

您确定在 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(至少对于网站而言)。

于 2009-02-09T20:26:05.307 回答
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 确实...

于 2010-12-06T05:44:04.877 回答
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 2008 托管计划之一,则需要将以下代码放入您的 web.config 文件中.

<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>
于 2014-01-27T12:28:40.090 回答
0

我只是遇到了同样的错误,但可能与您的原因不同。我在一个新网站上得到它(在本地运行),因为该网站使用了一个不排除 .ashx 的自定义 url 重写模块!

所以我的解决方案是确保重写模块排除带有.ashx的路径......

于 2009-06-16T14:43:41.170 回答
0

将我的网络表单迁移到 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>

当然,还有对 ajaxpro.2.dll 的引用放在我的 bin 文件夹中

希望这有用!

于 2013-11-07T08:17:57.887 回答