2009-05-02 4 views
9

シリアライズ可能なクラスのリストを取得するSilverlightアプリケーションがあります。これらのクラスには、シリアライズ可能なクラスがいくつかあり、その中にはリストもあります。 Silverlightアプリケーションで例外をスローする原因となるシリアライズ可能なクラスのリストの1つを満たすまで、すべてがうまくいきます。「リモートサーバーからエラーが返されました:NotFound」Silverlight Webservice "リモートサーバーからエラーが返されました:NotFound"

これはクラスを満たすコードです(Don 'トンはそれだけで)情報を持つクラスを埋めるのコードを大量におびえること:私はすべてが正常に動作し、コードの行を削除する場合は、コードの最後の3行で

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; 
     } 

は、currChar.projectileList.Add(scp);あります。私が問題を引き起こしていると思ったのは、ciruclar参照ですが、私はクラスをチェックして、何も見つけられないようです。私はprojectileList

アップデートを行う必要があるクラスのコードを貼り付けます必要な場合は、次のWebサービス自体をデバッグしようとしたと明らかにXMLシリアル化に問題がある、あなたは質問here

答えて

3

second質問で私の問題の解決策が見つかりました。

11

を見つけることができます取得しているエラーは一般的なものであり、誤解を招く可能性があります。 あなたの問題は、Silverlightでサポートされていないタイプがあり、WCFを使用して渡すことができないという事実に関連している可能性があります。

エラーの詳細については、Fiddlerというフリーツールを使用してみてください。 ここでそれを使用する方法の詳細な説明を見つけることができます:WCF Essentials - Fiddler

+0

感謝を!私が抱えていた問題は、あなたが提供したリンクの指示に従った後に見つけた欠落したDLLの結果でした。 –

13

次回、あなたはWCFトレースを有効にする必要があります

web.configファイルでこれを入れて:

<system.diagnostics>  
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
     <listeners> 
      <add name="traceListener" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData= "c:\temp\WEBTraces.log" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

ここで、このの続きを読む:http://msdn.microsoft.com/en-us/library/ms733025.aspx

+2

Windowsのイベントビューアでこれらのエラーが記録され、NotFoundエラーのデバッグに多くの助けとなる、よりコンパクトで読みやすいエラーメッセージが生成されることがわかりました。 – angularsen

関連する問題