PDA

Ver la Versión Completa : Problema al ejecutar un procedimiento dos usuarios distintos en aplicacion asp.net


mamen
27-04-2006, 14:52:17
Hola a todos necesito ayuda urgente!!!!! Ya no se que más probar

Tengo una aplicación en ASP.NET en local (utilizando mi propio equipo como servidor) aparentemente funciona correctamente, claro sólo lo he probado con un usuario, pero cuando lo subo al servidor y desde dos equipos distintos intento entrar a la vez en determinadas zonas me dan distintos errores pero solo en uno de los equipos en el otro funciona perfectamente.

Pero lo que es más raro es que si una vez q me ha dado el error lo vuelvo a intertar, en ese equipo, si me funciona. El problema lo tengo cuando intentan ejecutar esa accion los dos al mismo tiempo.

He estado mirando el fichero log pero no veo nada raro. Por favor si alguien me puede ayudar se lo agradeceria muchisimo. Muchas gracias

PD Estoy probando la llamada a un procedimiento q lo tengo en la BD y utilizo transacciones para no bloquear. El tipo de transaccion es Serializable

mamen
28-04-2006, 08:21:29
Se me ha olvidado poner los distintos tipos de error que me salen:

*The connection is already associated with an open DataReader. The DataReader must be closed first
*Connection must valid and open
*Object reference not set to an instance of an object
*There is no row at position 0
* Cannot find table 0

Por favor q alguien me ayude. Chao

__hector
02-05-2006, 23:09:32
mamen,

Cada uno de esos errores se debe a un tipo de error muy especifico, que no puede ser resuelto con una misma solucion.

En el caso de los errores del datareader, asegurate siempre, antes de llamar el metodo read(), que el objeto command tenga una conexion asignada y que la misma este abierta. Igualmente, que al momento en el que no necesites mas la conexion, siempre cerrarla. Para esto te recomiendo usar bloques try/finally para garantizar que la conexion siempre se cerrara al ejecutarse el codigo.

El error de there's no row at position 0 tiene que ver con que cuando ejecutas el codigo, la consulta no retorna registros. Siempre valida que el Count de las filas (rows) del datatable sea > 0 antes de intentar hacer esta operacion. Lo mismo con las tablas en el dataset (if dtSet.Tables.Count > 0).

Suerte!

dec
03-05-2006, 01:37:16
Hola,


Para esto te recomiendo usar bloques try/finally para garantizar que la conexion siempre se cerrara al ejecutarse el codigo.


Acaso también podría utilizarse un "bloque using" para esos menesteres, incluso me atrevería a decir que tal vez fuera más apropiado que un "try/finally", aunque no sé yo si atreverme a tanto. ;) En el WebLog de José Alarcón (http://www.jasoft.org/blog/PermaLink,guid,5cafc445-61d4-4fcd-a189-7a66b3722899.aspx) se ha tratado sobre el "bloque using" hace poco, por si os interesa echar un vistazo.

__hector
04-05-2006, 04:49:43
Si, pero hasta donde recuerdo using es solo para C# (no puedes hacer bloques using con vb.net p. ej, no se si con delphi.net), y no se que lenguaje este usando el chaval.

dec
04-05-2006, 14:58:23
Hola,


Si, pero hasta donde recuerdo using es solo para C# (no puedes hacer bloques using con vb.net p. ej, no se si con delphi.net), y no se que lenguaje este usando el chaval


No, si yo no lo decía por tanto: únicamente lo decía por si fuera mejor o pudiera servir de algo. Es cierto que no sabemos el lenguaje que se está utilizando. ;)