2009-05-02 20 views
9

मैं एक Silverlight अनुप्रयोग है कि serializable वर्गों की एक सूची retreives है। इन वर्गों में अन्य धारावाहिक कक्षाएं हैं जिनमें से कुछ सूची में भी हैं। बात यह है कि जब तक मैं सीरियलज़ेबल वर्गों की सूची में से किसी एक को भरता हूं, तो चांदी के अनुप्रयोग को अपवाद फेंकने का कारण बनता है "रिमोट सर्वर ने एक त्रुटि लौटा दी: नोटफॉउंड"सिल्वरलाइट वेब सेवा "दूरस्थ सर्वर ने एक त्रुटि दिखाई: NotFound"

यह वह कोड है जो कक्षा (डॉन ' टी कोड की बड़ी राशि यह सिर्फ जानकारी के साथ वर्ग भरने है) द्वारा धमकाया जा:

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

कोड के अंतिम 3 लाइनों में currChar.projectileList.Add(scp); है, अगर मैं कोड की है कि रेखा सब कुछ ठीक काम करता है हटा दें। जो मैंने सोचा था कि समस्या उत्पन्न हो सकती है वह सर्कक्लर संदर्भ है लेकिन मैंने कक्षाओं की जांच की है और मुझे कोई भी प्रतीत नहीं होता है। यदि आवश्यक हो मैं वर्गों के साथ projectileList

अद्यतन करना है कि के कोड पेस्ट करना होगा: वेब सेवा ही डिबग करने की कोशिश की और जाहिरा तौर पर वहाँ एक्सएमएल क्रमबद्धता के साथ एक समस्या है, तो आप सवाल here

उत्तर

3

मेरे second प्रश्न में मेरी समस्या का समाधान मिला।

11

पा सकते हैं आपको जो त्रुटि मिल रही है वह एक सामान्य है और भ्रामक हो सकती है। आपके मामले में समस्या इस तथ्य से संबंधित हो सकती है कि कुछ प्रकार सिल्वरलाइट द्वारा समर्थित नहीं हैं, इस प्रकार डब्ल्यूसीएफ का उपयोग करके पारित नहीं किया जा सकता है।

त्रुटि के बारे में अधिक विस्तृत जानकारी फ़िडलर कहा जाता है नि: शुल्क उपकरण का उपयोग कर प्रयास प्राप्त करने के लिए। आप यहां इसका उपयोग कैसे करें इसका विस्तृत विवरण प्राप्त कर सकते हैं: WCF Essentials - Fiddler

+0

धन्यवाद! जो समस्या मैं कर रहा था वह एक लापता डीएल का परिणाम था जो मैंने आपके द्वारा प्रदान किए गए लिंक पर दिए गए निर्देशों का पालन करने के बाद पाया था। –

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

मैंने पाया कि विंडोज़ में इवेंट व्यूअर इन त्रुटियों को लॉग करता है और यह एक बहुत अधिक कॉम्पैक्ट और पठनीय त्रुटि संदेश उत्पन्न करता है जिसने मुझे नोटफॉउंड त्रुटि डीबग करने में बहुत मदद की। – angularsen

संबंधित मुद्दे