Tengo una aplicación Silverlight que recupera una lista de clases serializables. En estas clases hay otras clases serializables, algunas de las cuales también están en una lista. La cosa es que todo funciona bien hasta que llene uno de la lista de clases serializables que hace que la aplicación Silverlight arroje la excepción "El servidor remoto devolvió un error: NotFound"Silverlight Webservice "El servidor remoto devolvió un error: NotFound"
Este es el código que llena la clase (Don ' t se deje intimidar por la gran cantidad de código que acaba de llenar la clase con información):
private SCharacter getSCharacter(Character userCharacter)
{
var iqcb = userCharacter.CharacterBodies;
var iqcs = userCharacter.CharacterStats;
var iqgs = userCharacter.CharacterSettings;
var iqcp = userCharacter.CharacterPoints;
var iqcproj = userCharacter.CharacterProjectiles;
var currChar =
new SCharacter
{
characterID = userCharacter.characterID,
characterName = userCharacter.characterName,
characterClassID = userCharacter.characterClassID,
userUsername = userCharacter.userUsername
};
foreach (var cb in iqcb)
{
var scb = new SCharacterBody();
scb.body.bodyId = cb.bodyId;
scb.body.bodyName = cb.Body.bodyName;
scb.bodyPart.bodyPartId = cb.BodyPart.bodyPartId;
scb.bodyPart.bodyPartName = cb.BodyPart.bodyPartName;
currChar.characterBodyList.Add(scb);
}
foreach (var cs in iqcs)
{
var scs =
new SCharacterStat
{
characterID = cs.characterID,
statId = cs.statId,
characterStatId = cs.characterStatId,
statName = cs.Stat.statName,
statValue = cs.statValue
};
currChar.characterStatList.Add(scs);
}
foreach (var igs in iqgs)
{
var scs = new SCharacterSetting
{
characterID = igs.characterID,
modifierId = igs.GameSetting.modifierId,
modifierType = igs.GameSetting.Modifier.modifierType,
characterSettingId = igs.characterSettingId,
settingDescription = igs.GameSetting.settingDescription,
settingName = igs.GameSetting.settingName,
settingValue = igs.GameSetting.settingValue
};
var gss = igs.GameSetting.Stat;
scs.stat.statId = gss.statId;
scs.stat.statName = gss.statName;
currChar.characterSettingList.Add(scs);
}
foreach (var cp in iqcp)
{
var scp = new SCharacterPoint
{
characterID = cp.characterID,
characterPointsId = cp.characterPointsId,
pointsId = cp.pointsId,
pointsName = cp.Point.pointsName,
pointsValue = cp.pointsValue
};
currChar.characterPointList.Add(scp);
}
foreach (var cp in iqcproj)
{
var scp =
new SCharacterProjectile
{
characterId = cp.characterId,
characterProjectileId = cp.characterProjectileId,
particleId = cp.Projectile.particleId,
projectileHeight = cp.Projectile.projectileHeight,
projectileWidth= cp.Projectile.projectileWidth,
damageId =cp.Projectile.damageId,
damageDuration = cp.Projectile.Damage.damageDuration,
damageValue = cp.Projectile.Damage.damageValue,
projectileName = cp.Projectile.projectileName
};
scp.force.forceName = cp.Projectile.forceName;
scp.force.impulseX = (float)cp.Projectile.Force.impulseX;
scp.force.impulseY = (float)cp.Projectile.Force.impulseY;
scp.force.torque = (float)cp.Projectile.Force.torque;
scp.projectileParticle.particleId = cp.Projectile.particleId;
scp.projectileParticle.particleName = cp.Projectile.Particle.particleName;
foreach (var psv in cp.Projectile.Particle.ParticleSettingValues)
{
var spsv = new SParticleSettingValue();
spsv.particleId = psv.particleId;
spsv.particleSettingID = psv.particleSettingID;
spsv.particleSettingName = psv.ParticleSetting.particleSettingName;
spsv.particleSettingValue = psv.particleSettingValue1;
spsv.particleSettingValuesID = psv.particleSettingValueID;
scp.projectileParticle.particleSettingList.Add(spsv);
}
foreach (var pc in cp.Projectile.Particle.ParticleColours)
{
var spc = new SParticleColour();
spc.colourHex = pc.colourHex;
spc.particleColourId = pc.particleColourId;
spc.particleId = pc.particleId;
scp.projectileParticle.particleColourList.Add(spc);
}
currChar.projectileList.Add(scp);
}
return currChar;
}
En las últimas 3 líneas de código no es currChar.projectileList.Add(scp);
, si quito esa línea de código todo funciona bien. Lo que pensé que podría estar causando el problema son las referencias circulares, pero revisé las clases y no puedo encontrar ninguna. Si es necesario voy a pegar el código de las clases que tienen que ver con projectileList
Actualización: Probado para depurar el servicio web en sí y al parecer hay un problema con la serialización XML, se puede encontrar la pregunta here
Gracias! el problema que tenía era el resultado de una DLL faltante que descubrí después de seguir las instrucciones en el enlace que proporcionó. –