【问题标题】:ASP.NET Javascript Converter does not seem to be invokedASP.NET Javascript Converter 似乎没有被调用
【发布时间】:2010-12-29 07:51:42
【问题描述】:

我有一个使用自定义 JavaScriptConverter 的 ASP.NET 3.5 SP1 Web 应用程序。该代码过去曾在某个时间工作,但已停止工作。不知道中间服务器端发生了什么变化。我们现在看到的问题是转换器没有被调用,所以我们得到了 System.Data.DataRow 无法序列化的错误。

以下是 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>

该类的修剪版本如下(修剪只是为了避免在不必要的实现上浪费空间):

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或将其添加到项目中,断点可用),但它没有被正确使用。类中的任何地方都没有断点被命中,也没有异常(包括在构造函数中抛出的异常,以查看发生了什么)。似乎该类正在加载但从未调用过。

这是在集成模式下的 IIS 7.5 和 IIS 7.0 上,如果重要的话。

有人有什么想法吗?

【问题讨论】:

    标签: json asp.net-ajax


    【解决方案1】:

    好的,以防万一其他人遇到此问题,当通过自动生成的测试页面调用 Web 服务时,不会调用自定义序列化程序 - 它们被绕过。这显然是设计使然。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多