CoreWCF 服务中传递数组时的序列化问题

问题描述 投票:0回答:1

我正在致力于将旧的 WebService 从 .NET (.asmx) 迁移到 CoreWCF SOAP 服务。目的是从 .NET Framework 4.0 迁移到 .NET 6/8,而不影响任何上游依赖项。

大多数情况下,迁移都是成功的,但有一个用例失败了。旧的 WebService 有一个接受字符串数组作为输入的 API。但是,当我在 CoreWCF 中实现相同的参数时,传入的数组始终接收为空。

我注意到的主要区别在于导出的 WSDL。 CoreWCF 服务将数组元素的命名空间指定为“http://schemas.microsoft.com/2003/10/Serialization/Arrays”,而旧版 WebService 没有该数组元素的任何特定命名空间。

我的主要怀疑是,由于我添加的消息检查器,CoreWCF 无法反序列化数组,我看到这些检查器在将值传递给操作之前检索它们。我还尝试在将请求发送到操作之前修改请求,但这种方法既不优雅也不有效。

我非常感谢有关解决此问题的任何指导。

c# .net web-services wcf corewcf
1个回答
0
投票

您可以创建如下所示的自定义类(根据您的需要更改命名空间)

[CollectionDataContract(Name = "ArrayOfString", Namespace = "http://example.com/Report", ItemName = "string")]
   [Serializable]
   public class ArrayOfString : List<string>
   {
   }
© www.soinside.com 2019 - 2024. All rights reserved.