2009-12-22 3 views
6

사용자 지정 JavaScriptConverter를 사용하는 ASP.NET 3.5 SP1 웹 응용 프로그램이 있습니다. 과거에 코드가 사용되었지만 작동을 멈췄습니다. 나는 중간 서버 측에서 어떤 변화가 일어 났는지 모른다. 우리가 지금보고있는 문제는 변환기가 호출되지 않아서 System.Data.DataRow를 직렬화 할 수 없다는 오류가 발생한다는 것입니다.ASP.NET Javascript 변환기가 호출되지 않는 것 같습니다.

<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는 클래스의 버전을 트리밍 다음 (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 및 프로젝트 참조에서 가져온다면 중단 점을 사용할 수 없으므로 다시 web.config에 넣고 DLL/PDB를 손으로 복사하거나 추가합니다 프로젝트에 중단 점을 사용할 수 있음). g는 유용하게 사용되었습니다. 클래스의 아무 곳이나 중단 점이 발생하지 않으며 예외가 발생하지 않습니다 (예외가 발생하면 생성자에 던져진 예외 포함). 클래스가로드되고 있지만 호출 된 적이없는 것처럼 보입니다.

중요한 점은 IIS 7.5 및 IIS 7.0 통합 모드입니다.

누구든지 아이디어가 있습니까?

답변

0

자동으로 생성 된 테스트 페이지를 통해 웹 서비스를 호출 할 때 다른 사용자가이 문제에 부딪 힐 경우 사용자 지정 serializer가 호출되지 않으므로 무시됩니다. 이것은 의도적으로 설계된 것입니다.

+0

@MikeBaz - 답변을 수락해야합니다. 맞습니다. –

관련 문제