2009-12-22 16 views
6

我有一個使用自定義JavaScriptConverter的ASP.NET 3.5 SP1 web應用程序。代碼曾經在過去的某個時間工作,但已停止工作。我不知道中間服務器端發生了什麼變化。我們現在看到的問題是轉換器沒有被調用,所以我們得到的錯誤是無法序列化System.Data.DataRow。似乎沒有調用ASP.NET Javascript轉換器

以下是web.config中的相關部分:

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

甲修剪類的版本被如下(僅修整,以避免對unnecesary實施浪費空間):

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中並手工複製DLL/PDB或添加它到該項目,斷點可用),但它不是g使用propertyly。在類中的任何位置都沒有斷點,並且沒有任何例外(包括添加到構造函數中的一個以查看會發生什麼)。看起來類正在被加載,但從未被調用過。

這是集成模式下的IIS 7.5和IIS 7.0,如果它很重要。

任何人有任何想法?

回答

0

好的,爲了防止其他人點擊此項,當通過自動生成的測試頁調用Web服務時,不會調用自定義序列化器 - 它們將被繞過。這顯然是通過設計。

+0

@MikeBaz - 你應該標記你的答案接受。它是正確的。 – 2010-03-17 10:30:42