gpt4 book ai didi

wcf - 在 SOAP 消息中将复杂类型作为参数发送

转载 作者:行者123 更新时间:2023-12-04 19:17:16 27 4
gpt4 key购买 nike

我有一个 WCF 服务,如下所示:

 public class Service1 : IService1
{
public string GetData(Person person)
{
if (person != null)
{
return "OK";
}
return "Not OK!";
}

这是我的 Person 类:
 [DataContract]
public class Person
{
[DataMember]
public int Age { get; set; }

[DataMember]
public string Name { get; set; }
}

我正在调用这样的服务:
 BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
IChannelFactory<IRequestChannel> factory = binding.BuildChannelFactory<IRequestChannel>(new BindingParameterCollection());
factory.Open();

EndpointAddress address = new EndpointAddress(url);
IRequestChannel irc = factory.CreateChannel(address);
using (irc as IDisposable)
{
irc.Open();
string soapMessage = "<GetData><person><Age>24</Age><Name>John</Name></person></GetData>";

XmlReader reader = XmlReader.Create(new StringReader(soapMessage));
Message m = Message.CreateMessage(MessageVersion.Soap11,"http://tempuri.org/IService1/GetData", reader);

Message ret = irc.Request(m);
reader.Close();
return ret.ToString();
}

当我尝试将像 Person 这样的复杂类型作为参数发送到 GetData 方法时,person 对象将变为 null。但是当我发送整数、字符串等已知类型作为参数时,我没有问题。

如何设法将复杂类型作为参数发送到服务方法?

最佳答案

我遇到了类似的情况,我们最终将服务的接口(interface)更改为相当于:

public string GetData(string person)

我们在调用 Web 服务之前进行了自己的对象序列化。在 Web 服务方法中,我们将立即对其进行反序列化,并正常进行。

关于wcf - 在 SOAP 消息中将复杂类型作为参数发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178958/

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