Visual CSharp .NET - Error 0x80004005 Web Service y COM

 
Vista:

Error 0x80004005 Web Service y COM

Publicado por Juan Bazán (1 intervención) el 03/01/2013 17:45:38
Buenos días a todos,
Estoy desarrollando un sitio web que se comunica por un web service a una base de datos de VFP, para poder hacer inserciones y actualizaciones en las tablas se está usando una dll creada desde VFP con librerías de clases, clases, métodos, etc.

Si corro las librerías desde VFP ejecutan normalmente.

Cuando genero la dll, y la cargo a la capa lógica y esta capa la cargo al web service, corro el método por primera vez, ejecuta normalmente y devuelve el número generado por la inserción.
Cuando quiero correr por segunda vez el método en la misma sesión el sistema se cae al momento de instanciar la clase generada por VFP. Reinicio el IIS y ejecuta normalmente de nuevo y a la segunda vez se vuelve a caer, me parece que estoy dejando abierto algo, o no estoy liberando correctamente alguna variable.

Espero su pronta ayuda. Si necesitan más información me lo hacen saber.

Les pondré el código del WebMethod y el método en la capa lógica para que lo entiendan mejor.

Web Service:

[WebMethod]
public object Recque_Insert(DIS117_BE oCab, List<DIS241_BE> oDet, string KeyWebService)
{
try
{
if (KeyWebService != _KeyWebService)
throw new Exception("KeyWebService Incorrecto");
ReclamosQuejas_BL oReclamosQuejas_BL;
object Res;
using (oReclamosQuejas_BL = new ReclamosQuejas_BL(FoxCnOleDB))
{
Res = oReclamosQuejas_BL.RecQue_Insert(oCab, oDet); //Intenté implementando la interfaz IDisposable para eliminar los recursos utilizados por esta clase pero igual se sigue cayendo.
}
oReclamosQuejas_BL.Dispose(); //Método Dispose de la interfaz IDisposable.
return Res;
}
catch (Exception ex)
{
Error = "Recque_Insert: " + ex.ToString();
SaveException(Error);
throw new Exception(Error);
}
}



Logic:

public object RecQue_Insert(DIS117_BE oCab, List<DIS241_BE> oDet)
{
dis117ngClass oDis; //Esta es la clase generada por VFP
try
{
object lcCab = oCab.aciacd.Trim() + "|" + oCab.asuccd.Trim() + "|" + oCab.aclicd.ToString().Trim() + "|" +
oCab.afechoraStr.Trim() + "||0|" + oCab.apersona.Trim() + "|" + oCab.aarea.Trim() + "|" +
oCab.areclamo.Trim() + "|0||0||||" + oCab.atipocd.Trim() + "|" + oCab.amotivocd.Trim() + "|0|" +
oCab.atelefcon.Trim() + "|" + oCab.asuccd1.Trim() + "|" + oCab.amotivocd2.Trim() + "|0|" +
oCab.atpdoc.Trim() + "|" + oCab.anrdoc.ToString().Trim() + "|" + oCab.aenvcltstr.Trim() + "|" +
oCab.aentncstr.Trim();
object lcDet = "";
object Res;
for (int i = 0; i < oDet.Count; i++)
{
lcDet += oDet[i].aciacd.Trim() + "|" + oDet[i].asuccd.Trim() + "|0|" + oDet[i].aprdcd.ToString().Trim() + "|" +
oDet[i].acanti.ToString().Trim() + "|" + oDet[i].acapen.ToString().Trim() + "|" + oDet[i].apropie.Trim() + "|0#";
}
if (lcDet.ToString().EndsWith("#"))
lcDet.ToString().Remove(lcDet.ToString().Length - 1, 1);

//lcCab = "05|01|95016|07/12/2012 17:42:44||0|ERICK CAVERO|SISTEMAS|NO LE LLEGO SU FACTURA|0||0||||001|0002|0||01|0001|0|FAC|4490001749|.F.|.F.";
//lcDet = "05|01|0|5001317|3|6.800|N|0";
oDis = new dis117ngClass(); //Aqui la primera vez pasa normal, la segunda vez se cae
Res = oDis.mcrear_dis117_web(ref lcCab, ref lcDet);
oDis = null; //Como verán aquí estoy liberando la variable, esta clase también tiene un método Destroy pero tampoco me funciona.
return Res;
}
catch (Exception ex)
{
oDis = null;
throw new Exception(Error + "RecQue_Insert: " + ex.Message);
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder