2009-12-22 19 views
6

Özel bir JavaScriptConverter kullanan bir ASP.NET 3.5 SP1 web uygulamasına sahibim. Kod, geçmişte bir süre çalışmış, ancak çalışmayı durdurdu. Orta sunucu tarafında hangi değişikliklerin olduğunu bilmiyorum. Şimdi gördüğümüz sorun, dönüştürücünün çalıştırılmamasıdır, bu yüzden System.Data.DataRow'un serileştirilemediği konusunda hatalar alıyoruz.ASP.NET Javascript Dönüştürücüsü çağrılmıyor görünüyor

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

A sınıfı versiyonu kesilmiş aşağıdaki gibi (Gereksiz uygulanmasına ilişkin israf alanı önlemek için sadece kesilmiş) olan:

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

aşağıdaki web.config ilgili kısmıdır Olması gereken şey, sınıfın gerçekten yüklendiğidir (web.config ve proje referanslarından çıkarsak, herhangi bir sınırlama yoktur, web.config'e geri koyun ve DLL/PDB'yi elle kopyalayın veya ekleyin) projeye, kesme noktaları mevcuttur, ancak bu değil g kullanıldı. Sınıfta herhangi bir yerde hiçbir kesme noktası vurulmaz ve (ne olduğunu görmek için bir yapıcıya atılanlar dahil) hiçbir istisna atılmaz. Sınıf yükleniyor gibi görünüyor ama hiç çağrılmadı.

Önemliyse, IIS 7.5 ve Tümleşik modda IIS 7.0 sürümündedir.

Herhangi bir fikri olan var mı?

cevap

0

Tamam, başka birinin buna vurması durumunda, otomatik olarak oluşturulan test sayfalarıyla web hizmetleri çağrılırken, özel serileştiriciler çağrılmaz - atlanırlar. Bu görünüşe göre tasarım.

+0

@MikeBaz - cevabınızı kabul etmelisiniz. Bu doğru. –

İlgili konular