Mam aplikację Silverlight, która uwzględnia listę klas możliwych do serializacji. W tych klasach są inne klasy serializowalne, z których niektóre są również na liście. Chodzi o to, że wszystko działa poprawnie, dopóki nie wypełnię jednej z listy klas nadających się do serializacji, która powoduje, że aplikacja silverlight rzuca wyjątek "Serwer zdalny zwrócił błąd: NotFound"Usługa Silverlight Webservice "Serwer zdalny zwrócił błąd: NotFound"
To jest kod, który wypełnia klasę (Don ' t być zastraszani przez dużą ilość kodu to po prostu napełniania klasy z informacji):
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;
}
W ciągu ostatnich 3 linii kodu jest currChar.projectileList.Add(scp);
, jeśli usunąć tę linię kodu wszystko działa poprawnie. To, co uważałem, że może być przyczyną problemu, to odniesienia do cyuceli, ale sprawdziłem klasy i nie mogę ich znaleźć. W razie potrzeby będę wkleić kod z klas, które mają do czynienia z projectileList
Aktualizacja: Próbował debugować sama usługa i podobno jest tam problem z serializacji XML, można znaleźć pytanie here
Dzięki! problem, który miałem był wynikiem brakującej biblioteki dll, którą dowiedziałem się po wykonaniu instrukcji na podanym przez ciebie linku. –