SOAP 메시지에서 매개 변수로 복합 형 보내기다음과 같이 내가 WCF 서비스를
[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이됩니다. 하지만 매개 변수로 정수, 문자열 등 알려진 된 형식을 보낼 때 나는 아무런 문제가 없습니다.
복잡한 형식을 매개 변수로 서비스 메서드에 보내려면 어떻게해야합니까?
Person의 코드는 무엇입니까? [DataContact]로 표시되어 있습니까? http://msdn.microsoft.com/en-us/library/ms733127.aspx – ErnieL
예, 또한 Person 클래스로 내 질문을 업데이트했습니다. –
왜 서비스 참조 만 사용하지 않습니까? –