gpt4 book ai didi

web-services - 通过 Web 服务传递序列化对象与传递对象

转载 作者:行者123 更新时间:2023-12-04 17:05:02 25 4
gpt4 key购买 nike

我在 C#.NET 中有一个具有以下命名空间的网络服务:

[WebService (Namespace = "http://enterpriseName/wsName")]

Web 服务包含一个 WebMethod GetServiceObject 和一个类 MyObject。
此 Web 方法返回一个字符串,其内容是 MyObject 的序列化实例。
[WebMethod (MessageName = "GetServiceObjectXML" Description = "Get ServiceObject from Server to Client")]  
public string GetServiceObjectXML ()

此方法返回以下 XML:
<? Xml version = "1.0" encoding = "utf-16"?>
<ServiceObject Xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Services>
<service>
<id>3</id>
<date>02/08/2010</date>
</service>
</Services>
</ServiceObject>

我遇到的问题是,当我从客户端调用此方法并尝试将此 xml 反序列化为 MyObject 类时,我得到了一个 NULL 对象。

之后,我创建了一个具有以下签名的新 WebMethod:
[WebMethod (MessageName = "GetServiceObject" Description = "Get ServiceObject from Server to Client")]
public MyObject GetServiceObject ()

当我从客户端调用这个方法时,我得到了正确填充的对象,我也可以毫无问题地序列化对象,但序列化的结果是以下xml:
<? Xml version = "1.0" encoding = "utf-16"?>
<ServiceObject Xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Services Xmlns="http://enterpriseName/wsName">
<service>
<id>3</id>
<date>02/08/2010</date>
</service>
</Services>
</ServiceObject>

这与 WebMethod GetServiceObjectXML 生成的 xml 不同。

我怎样才能解决这个问题,因为我打算在同一个 web 服务和同一个客户中使用这两种方法?

最佳答案

显而易见的答案是,修复 GetServiceObjectXML() 以返回与 GetServiceObject() 相同的 XML。不同之处似乎是框架序列化的对象指定了不同的 XML 命名空间。无论您在 GetServiceObjectXML() 中用于将对象序列化为 XML 的任何方法都没有这样做。

关于web-services - 通过 Web 服务传递序列化对象与传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426420/

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