4
我有一個WCF服務類似以下內容:發送複雜類型在SOAP消息中的參數
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。但是當我發送像integer,string等已知類型作爲參數時,我沒有問題。
如何管理將複雜類型作爲參數發送到服務方法?
Person的代碼是什麼?它是否標有[DataContact]? http://msdn.microsoft.com/en-us/library/ms733127.aspx – ErnieL
是的,也用Person類更新了我的問題。 –
爲什麼不只是使用服務參考? –