You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧版ASP.NET ASMX Web服务中获取应用级JavaScriptSerializer方法

旧版ASP.NET ASMX Web服务注册自定义JavaScriptSerializer转换器方案

方法一:单个Web服务类内重写序列化器(服务级控制)

在你的MyWS类中重写GetScriptSerializer方法,返回已添加自定义转换器的JavaScriptSerializer实例,该服务下所有标记[ScriptMethod]的方法都会使用这个序列化器:

public class MyWS : System.Web.Services.WebService
{
    protected override JavaScriptSerializer GetScriptSerializer()
    {
        var serializer = base.GetScriptSerializer();
        // 注册自定义转换器,替换为你的转换器实例
        serializer.RegisterConverters(new List<JavaScriptConverter> { new YourCustomConverter() });
        return serializer;
    }

    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public YourReturnType YourWebMethod()
    {
        // 业务逻辑代码
        return yourDataObject;
    }
}

方法二:全局配置(应用级所有ASMX服务生效)

通过Web.config配置全局JSON序列化规则,所有使用JavaScriptSerializer的ASMX服务都会自动加载自定义转换器:

在Web.config的<configuration>节点内添加以下配置:

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization>
        <converters>
          <!-- 替换为你的转换器类完全限定名(命名空间+类名)和程序集名称 -->
          <add name="YourCustomConverter" type="YourNamespace.YourCustomConverter, YourAssemblyName" />
        </converters>
      </jsonSerialization>
    </webServices>
  </scripting>
</system.web.extensions>

多个自定义转换器可添加多个<add>节点。

补充:特定方法手动序列化

如果仅需对个别方法做自定义序列化,可在WebMethod内手动创建序列化器并输出结果:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.None)]
public void CustomSerializedMethod()
{
    var targetData = yourTargetData;
    var serializer = new JavaScriptSerializer();
    serializer.RegisterConverters(new List<JavaScriptConverter> { new YourCustomConverter() });
    string jsonResult = serializer.Serialize(targetData);

    Context.Response.ContentType = "application/json";
    Context.Response.Write(jsonResult);
}

注:自定义转换器需继承JavaScriptConverter抽象类,实现Serialize、Deserialize方法,并指定支持转换的类型。

内容的提问来源于stack exchange,提问作者MPelletier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:24:59