gpt4 book ai didi

json - 似乎未调用ASP.NET Javascript Converter

转载 作者:行者123 更新时间:2023-12-03 19:37:29 24 4
gpt4 key购买 nike

我有一个使用自定义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上的“集成”模式下进行的。

有人有主意吗?

最佳答案

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

关于json - 似乎未调用ASP.NET Javascript Converter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com