2009-02-09 31 views
6

Localmente mi aplicación funciona bien usando ajaxpro, pero en el servidor parece que no puedo entender por qué no está funcionando.AjaxPro funciona localmente, pero en el servidor obtengo errores .ashx

usando firebug tengo los siguientes: erros

GET prototype.ashx 404 no encontrado GET core.ashx 404 no encontrado GET ms.ashx 404 no encontrado

mismo código trabaja a nivel local, por lo que debe ser una configuración de IIS7?

edición, mi web.config

<httpHandlers> 
      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/> 
     </httpHandlers> 

también tienen:

<location path="ajaxpro"> 
     <system.web> 
      <httpHandlers> 
       <add verb="POST,GET" path="*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/> 
      </httpHandlers> 
      <authorization> 
       <allow users="*"/> 
      </authorization> 
     </system.web> 
    </location> 

y:

<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> 

Respuesta

1

¿Estás seguro de que ha registrado los controladores correctamente en el archivo web.config?

Debería tener algo que se parece a lo siguiente en su archivo web.config.

<location path="ajaxpro"> 
    <system.web> 
     <httpHandlers> 
      <add verb="*" path="*.ashx" 
       type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/> 
     </httpHandlers> 
    </system.web> 
</location> 

También necesita tener el dll AjaxPro en su directorio Bin (para un sitio web, al menos).

9

Para que AjaxPro.dll funcione en IIS7 debe establecer PipelinMode de su grupo de aplicaciones en Classical en lugar de Integrated.

He intentado en todas partes para encontrar esto, pero al final esto fue lo que me salvó.

+0

ha funcionado para mí, gracias – Navaneethan

5

Para ejecutar Ajax.NET en IIS7 (Windows Vista) en modo integrado en lugar de modo clásico Aquí hay dos cosas que usted tiene que comprobar:

  1. En primer lugar comprobar que el grupo IIS_ISSRS tiene acceso a su sitio Web carpeta. Si está utilizando la carpeta predeterminada para sitios web con Visual Studio .NET 2005, la forma más sencilla es agregar acceso de lectura en C: \ Users \ Username \ Documents \ Visual Studio 2005 \ WebSites.
  2. Ejecutar comando siguiente para migrar automáticamente el archivo web.config: % windir% \ system32 \ inetsrv \ config appcmd migrar ""

El cambio importante para Ajax.NET profesional es que usted tiene que mover el httpHandler (y httpModule si se usa) a una nueva sección system.webServer y cambiar el nombre de httpHandler a handler; Usted tiene que añadir un atributo de nombre para el controlador:

<configuration> 

    <location path="ajaxpro"> 
     <system.webServer> 
      <handlers> 
       <add verb="*" path="*.ashx" name="AjaxPro" 
        type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" /> 
      </handlers> 
     </system.webServer> 
    </location> 

</configuration> 
+0

Esto es sólo copia pegada de Google. Sin embargo, si lo usa, tenga en cuenta que el nombre del grupo es IIS_IUSRS en lugar de IIS_ISSRS. – Flater

0

yo sólo tenía el mismo error, pero probablemente por una razón diferente de lo que hizo. Lo conseguí en un nuevo sitio web (ejecutándose localmente) porque el sitio web usaba un módulo de reescritura url personalizado que no excluía .ashx!

Así que la solución para mí era asegurarse de rutas excluidas del módulo de reescritura con .ashx ...

2

he estado golpeando mi cabeza contra este problema durante un par de horas, y yo creo que puede tener Acabo de encontrar una solución ... y es más bien, errr ... frustrante.

En web.config, system.webServer/manipuladores, puede haber más de un elemento que se encarga * .ashx

por ejemplo:

<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" ... 

Si la entrada es ajaxpro continuación estos, no se usará, ya que estas entradas coinciden primero. Mover la entrada ajaxpro por encima de las demás podría resolver el problema.

no tengo ni idea de por qué Cassini no le importa, pero IIS7 hace ...

+0

Estaba obteniendo errores 404 en controladores que habían funcionado durante años, resulta que fueron reemplazados por estos controladores SimpleHandlerFactory que de alguna manera entraron en IIS. ¡Cuidado con los controladores generales! – stuartdotnet

0

Tengo este error (ajaxpro/core.ashx 404 no encontrado) después de migrar mi formulario web a MVC 4

lo resuelto añadiendo esta línea a mi app_start/routeconfig

routes.IgnoreRoute("ajaxpro/{*pathInfo}"); 

mi dejase`t web.config necesito declaraciones adicionales pero éste

<httpHandlers> 
     <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/> 
    </httpHandlers> 

y, por supuesto, una referencia a ajaxpro.2.dll colocado en mi carpeta bin

Espero que sea útil!

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 no tiene la asignación de controlador AXD establecido por defecto para el uso de Ajax por lo que necesita para poner el siguiente código en el archivo web.config si desea utilizar Ajax y está en uno de nuestros planes de alojamiento de Windows 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> 

o copiar el archivo .dll a la carpeta bin y tratar de que:

<httpHandlers> 
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/> 

</httpHandlers> in <system.web> 
Cuestiones relacionadas