none
Problema con bad request en modalPopupExtender

    Question

  • Hola, les escribo porque necesito su ayuda con un problema que tengo en mi página asp.net (C#).

    Tengo una masterpage, la cuál, debajo del contentPlaceHolder, hay un updatePanel con un contentTemplate, el cuál tiene un panel con un formulario de login dentro, éste se asocia con un ModalPopupExtender, el cuál hace que se muestre la ventana de login en forma de modal.
    El método que captura el click del boton para loguearse (que está dentro del formulario de login), está en el code behind de la masterPage. Éste método lo que hace es comprobar el usuario y contraseña contra un WebService.

    Antes del panel que contiene el login, hay un botón con id = "buttonNull", que no se ve, el cuál es el TargetControlID del ModalPopupExtender.

    El problema es el siguiente.. cuándo estoy localmente, es decir, corriendo el sitio web desde la solución en el vs2008, el modal funciona perfectamente y me redirecciona a la página que debe hacerlo cuándo el login es correcto, pero el problema sucede cuándo utilizo la página desde el servidor ya subida a mi dominio.. el modal popup se muestra correctamente y si lo quiero cerrar (a travéz de un linq que tengo en el formulario) éste se cierra, pero al hacer click en el botón para loguearse, éste no me envía a la página siguiente, sinó que el firebug de firefox me tira un error larguísimo, que entre todo dice "The request failed with HTTP status 400: Bad Request.".

    Todo lo que me dice el error en el firebug es lo siguiente:

    [Exception... "'Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: The request failed with HTTP status 400: Bad Request.' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "JS frame :: chrome://firebug/content/spy.js :: onHTTPSpyReadyStateChange :: line 497" data: no]
    this._upperAbbrMonths = this...s.dateTimeFormat.AbbreviatedMonthNames);

    Como ven, con un error así, como que no se mucho que hacer :S... espero que me puedan ayudar, muchas gracias!

    Monday, March 23, 2009 1:48 PM

All replies

  • Cuando creaste tu proyecto en Visual Studio 2008, lo hiciste con target .Net 2.0 o .Net 3.5?. Si fue con .Net 2.0, verifica que este instalado ASP.NET AJAX 1.0, y si es .Net 3.5, verifica que el servidor soporte .Net 3.5.

    Saludos,


    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    Monday, March 23, 2009 5:57 PM
  • Si, funciona en .NET 3.5 y se que en el servidor funciona porque otras páginas no tienen problema.
    Tuesday, March 24, 2009 2:06 PM
  • Quiero decir que ahora, me sale la siguiente escepción:

    Sys.WebForms.PageRequestManagerServerErrorException: Input string was not in a correct format when calling method....

    Espero me puedan ayudar :S
    Tuesday, March 24, 2009 2:54 PM
  • Ya vez... el error te dice todo, hay un input o string que estas tratando de convertir a entero o numerico, cuando no tiene el string de un entero (3454JTR).

    Revisa los conversiones que haces cuando el usuario ingresa valores, o cuando los recuperas de la base datos. Quizas faltan algunas variables de configuracion en el server.

    Siempre ASP.NET AJAX (el updatePanel) oculta los verdaderos errores, te recomiendo revisar el siguiente artículo: Recomendaciones para la Adopcion de AJAX usando ASP.NET AJAX, sobre todo la parte donde dice que no debemos usarlo hasta que todo funcione bien, a continuació un extracto:

    "No usarlo. No usarlo hasta que la página web este funcionando al 100%. La magia de ASP.NET AJAX, a través del UpdatePanel, permite que luego de que la página este funcionando, arrastramos al control UpdatePanel, colocamos nuestros controles de ASP.NET dentro del UpdatePanel, y nuestra página aspx ya tiene AJAX, con sólo arrastrar un control, en este WebCast, se muestra como a una aplicación Web existente (de otro autor), la implementación de ASP.NET AJAX usando el UpdtePanel fue sencilla y no requirió cambiar el modelo de programación. La recomendación, que motiva a no usar ASP.NET AJAX hasta que la página este funcionando, es debido a que muchas veces suele confundirse los errores, y no se sabe si la página no funciona por que el UpdatePanel tiene un bug, o los otros controles que estamos usando tiene bug, y raras veces se piensa que el código que hemos hecho es el que tiene el bug. Por eso, si nos centramos principalmente en hacer funcionar la página al inicio, el rango de causas de errores disminuirá por que no incluye los que pueda producir el uso de ASP.NET AJAX, lo que hará más fácil identificarlos, y solucionarlos, y esto sobretodo para procesos complejos, que tienen que implementarse"

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    Tuesday, March 24, 2009 3:58 PM