2009-12-22 15 views
6

प्रतीत नहीं होता प्रतीत होता है मेरे पास एक एएसपी.NET 3.5 SP1 वेब एप्लिकेशन है जो एक कस्टम जावास्क्रिप्ट कनवर्टर का उपयोग करता है। कोड अतीत में कुछ समय में काम करता था, लेकिन काम करना बंद कर दिया है। मुझे नहीं पता कि मध्य सर्वर की तरफ क्या बदलाव हुए हैं। अब हम जो समस्या देख रहे हैं वह यह है कि कनवर्टर नहीं लगाया जा रहा है, इसलिए हमें त्रुटियां मिल रही हैं कि System.Data.DataRow को क्रमबद्ध नहीं किया जा सकता है।एएसपी.नेट जावास्क्रिप्ट कनवर्टर

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization> 
       <converters> 
        <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview" /> 
        <add name="DataRowConverter" type="WebUI.DataRowConverter, WebUI.DataRowConverter, Version=1.1.0.323, Culture=neutral" /> 
        <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview" /> 
       </converters> 
      </jsonSerialization> 
     </webServices> 
    </scripting> 
</system.web.extensions> 

एक छंटनी वर्ग के संस्करण है इस प्रकार है (अनावश्यक कार्यान्वयन पर बर्बाद कर अंतरिक्ष से बचने के लिए केवल छंटनी):

using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Data; 
using System.Web.Script.Serialization; 

namespace WebUI { 
    public class DataRowConverter : JavaScriptConverter { 
     private ReadOnlyCollection<Type> _supportedTypes = new ReadOnlyCollection<Type>(new Type[] { typeof(DataRow) }); 

     public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { 
      // stuff 
      return dr; 
     } 

     public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer) { 
      // stuff 
      return dictionary; 
     } 

     public override IEnumerable<Type> SupportedTypes { 
      get { 
       return this._supportedTypes; 
      } 
     } 
    } 
} 

निम्नलिखित web.config के संबंधित भाग है ऐसा लगता है कि कक्षा वास्तव में लोड की जा रही है (यदि हम इसे web.config और परियोजना संदर्भों से बाहर लेते हैं, तो कोई ब्रेकपॉइंट उपलब्ध नहीं है; इसे वापस वेब.कॉन्फिग में डालें और डीएलएल/पीडीबी को हाथ से कॉपी करें या इसे जोड़ें परियोजना के लिए, ब्रेकपॉइंट्स उपलब्ध हैं), लेकिन यह बीन नहीं है जी संपत्ति का इस्तेमाल किया। कक्षा में कहीं भी कोई ब्रेकपॉइंट हिट नहीं होता है, और कोई अपवाद नहीं होता है (जिसमें कोई भी कन्स्ट्रक्टर में फेंक दिया जाता है, यह देखने के लिए जोड़ा जाता है) फेंक दिया जाता है। ऐसा लगता है कि कक्षा लोड हो रही है लेकिन कभी नहीं बुलाया जाता है।

यह आईआईएस 7.5 और आईआईएस 7.0 पर एकीकृत मोड में है, यदि यह मायने रखता है।

किसी के पास कोई विचार है?

उत्तर

0

ठीक है, अगर किसी और ने इसे हिट किया है, तो स्वचालित रूप से जेनरेट किए गए परीक्षण पृष्ठों के माध्यम से वेब सेवाओं को कॉल करते समय, कस्टम सीरियलाइज़र को नहीं बुलाया जाता है - वे बाईपास किए जाते हैं। यह स्पष्ट रूप से डिजाइन द्वारा है।

+0

@ माइकबज़ - आपको अपना उत्तर स्वीकार कर लेना चाहिए। यह सही है। –

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