2010-09-12 14 views
28

Tuve un problema complicado con ASP.Net 4.0 Ajax .... Empecé un sitio web con Visual Studio 2010 en mi máquina, y agregué algunos paneles de actualización que solían usar trabajan muy bien, pero de repente me dieron esa serie de errores cuando funciono mi página webFramework Ajax del lado del cliente no pudo cargar Asp.Net 4.0

Microsoft JScript runtime error: ASP.NET Ajax client-side framework failed to load.

Microsoft JScript runtime error: 'Sys' is undefined

las cosas extrañas es que he hecho una página web en la misma máquina, con el VS 2010 y los paneles de actualización no trabajo perfectly.i tomaron su web.config a mi nuevo sitio web y cambié solo la conexión ... y obtuve el mismo error

Traté de buscar una solución pero no pude encontrar ninguna solución real.Puede anyon e ayuda?

+0

Una publicación tan útil, he tenido este problema en más de una ocasión y he utilizado varias respuestas aquí para resolverlo. ¡Gracias, SO comunidad! – johntrepreneur

+3

no estoy seguro de por qué se cerró según su utilidad para mí y todos los comentarios positivos de la comunidad SO. En este caso, no creo que esté justificado por todos los votaciones ascendentes de la comunidad. – johntrepreneur

+0

He cambiado el modo de canal administrado de DefaultAppPool de 'Clásico' a 'Integrado' y funcionó para mí. No puedo decir ningún cambio de configuración común contigo, pero podría funcionar para ti también. – smlnl

Respuesta

32

Aquí está la respuesta por zhughes de este thread en foro asp.net.

El motivo: la ruta del javascript generado por el scriptmanager cambia cuando se utiliza el módulo de enrutamiento URL.

La solución: Dile a la API de enrutamiento para que no pase los archivos con extensión "AXD" (los archivos generados por el scriptmanager)

Añadir esta regla para el método en el que se registra en las reglas de enrutamiento Global.asax

routes.Ignore("{resource}.axd/{*pathInfo}"); 

además se debe tener en esta sección web.config

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+1

routes.Ignore ("{resource} .axd/{* pathInfo}"); debe aparecer primero y antes de routes.MapPageRoute ("RootPages", "{file}", "~/{file} .aspx"); – Paul

+0

Esto eliminó mis errores JS, pero el AJAX aún no funciona en absoluto. Parece que está llegando a lo que quiero en la respuesta, pero no a la salida. ¿Alguna idea? – balexander

+0

No ejecutaría runAllManagedModulesForAllRequests = "true" - podría ser un gran golpe para el rendimiento. http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html – strongriley

2

Este es un error común que ocurre cuando intentas llamar a la función framework javascript antes de que la página los haya cargado.

Así que ejecuta su código cuando dom está listo (por ejemplo, carga de página), coloque su código después de la etiqueta scriptmanager, o verifique para colocarlo después de la carga de javascript desde scriptmanager.

+0

¿Cómo puedo hacer eso? y sí, el administrador de scripts está en la parte superior de mi página maestra, pero incluso cuando creé una nueva página en blanco, con solo una etiqueta y un botón en un panel de actualización ,, recibí el mismo error – Khaled

+0

@khaled ¿puede ver la fuente? código de su página (haga clic derecho en el navegador y seleccione el código fuente). Luego revisa la línea donde obtienes el error.Tal vez hay elementos en su página que usted ha configurado en web.config? – Aristos

+0

@Aristos gracias por su respuesta, intenté fastidiar la página con firebug y cambié la línea que dispara el error después de todas las referencias de scripts, que no permitía que toda la publicación de la página retrocediera cuando un control en un panel de actualización publicaba de nuevo. . sucede sin ninguna acción ... comencé un nuevo sitio web en blanco e importé mis páginas, app_code y carpetas BIN ... funcionó bien, pero más tarde, sin cambiar nada, recibí el mismo error. :( – Khaled

2

he tenido este problema y buscó una respuesta de la todopoderosa Google, tratado v sugerencias arious incluyendo los de arriba pero no tuvieron suerte. Se levantó y pasó a otro trabajo, regresó unos días después y el problema desapareció.

Volví a trabajar, realicé algunos cambios de código y publiqué mi sitio web y el problema reapareció. Volví a Google y encontré a alguien que tuvo el problema al usar el marco 3.5. En ese caso, pudo resolver el problema yendo al panel de control "Agregar o quitar programas" y seleccionando la opción de reparación.

También hice lo mismo, reparando el 'MS .NET Framework 4 Client Profile' y 'MS .NET Framework 4 Extended'. Eso solucionó el problema para mí.

Espero que lo resuelva para otra persona.

3

Estaba teniendo el mismo problema. Instalé VS 2010 SP1 y el problema desapareció.

3

Tuve el mismo problema y lo resolví ejecutando el comando aspnet_regiis -i en la carpeta del Framework 4.0 (en el que se ejecutó mi aplicación). Fue un problema en la asignación de manejador de IIS: esta operación me solucionó el problema. Vea también this post.

Espero que haya podido ser útil.

2

En mi caso, es IISExpress, volver al servidor de desarrollo cassini me solucionó el dolor de cabeza.

+0

¿Cómo hiciste esto? Estoy en VS2012, y una vez que IIS Express ha entrado en mi sitio web, ¡no puedo dejar que VS2012 use Cassini para este sitio web! – jimtut

1

Tuve este problema al lidiar con una página maestra y en mi caso era un meta setting "Base" que me estaba fastidiando. Recuerdo haber leído otro artículo/blog en algún lugar donde mencionaban un problema con la validación ajax en diferentes dominios que causaban este tipo de error.

Así que en mi caso, tenía una referencia <base...> estableciendo la url predeterminada para el sitio, pero mi desarrollador obviamente era una url diferente ... por lo tanto, el conflicto y el "marco ASP.NET Ajax del cliente no se pudo cargar". error.

Se ha eliminado la base y se ha perdido el error.

HTH

de Dave

8

he encontrado que esto es un problema, posiblemente, un almacenamiento en caché/compresión y poniendo en el siguiente en Web.Config, resuelve el problema.

<system.web.extensions> 
    <scripting> 
     <scriptResourceHandler enableCaching="false" enableCompression="false" /> 
    </scripting> 
</system.web.extensions> 
+0

mientras esto se deshizo del error para mí (+1), no parece ideal desactivar el almacenamiento en caché. – johntrepreneur

+0

aunque no es ideal, esta fue mi respuesta por ahora, pero después de probar la solución de kannankeril para reparar el 'programa instalado' -> 'MS .NET Framework 4 Client Profile', eliminó el problema de forma permanente para mí. – johntrepreneur

3

Microsoft JScript error de tiempo de ejecución: ASP.NET Ajax marco del lado del cliente no se pudo cargar.

Agregar referencia como esto ..

<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>    
<add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Services.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
3

Puede ser simplemente parte que falta en su web.config como el <Handlers> de <httpHandlers>, mi consejo es que si usted tiene vieja copia de su web.config probarlo.

9

si utilizando el módulo de reescritura de URL, a continuación, en cada regla de reescritura añadir

<add input="{URL}" pattern="\.axd$" negate="true"/> 

en condiciones de etiquetas, así:

<rule name="HomeRewrite" stopProcessing="true"> 
    <match url="^home$"/> 
    <conditions> 
    <add input="{URL}" pattern="\.axd$" negate="true"/> 
    </conditions> 
    <action type="Rewrite" url="/home.aspx"/> 
</rule> 
1
  1. Si .Net Framework 4.0 Client Profile no está disponible en su máquina, entonces repare .net Frame work 4.0 o reinstale.
  2. vaya a Propiedad del proyecto y seleccione el marco de destino 3.5.
1

En mi caso, fue la herramienta UrlScan de Microsoft la que rechazó algunas URL solicitadas por Ajax. Deshabilitarlo resolvió el problema.

Cuestiones relacionadas