我有使用原始消息(消息類)的WCF服務。WCF:如何創建一個對象作爲客戶端消息的參數
1)服務端:
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
[ServiceContract]
public interface ITestService
{
[OperationContract(Action = TestService.RequestAction3)]
void AddNewPerson(Message newPerson);
public void AddNewPerson(Message newPerson)
{
Person personToAdd = newPerson.GetBody<Person>();
Employees.Persons.Add(personToAdd);
}
2)客戶端:
TestServiceClient client = new TestServiceClient();
String RequestAction3 = "http://localhost:4249/Message_RequestAction3";
TestService.Person person = new TestService.Person
{
Id = 6,
FirstName = "Aleksey",
LastName = "Alekseyev"
};
Message request3 = Message.CreateMessage(MessageVersion.Default, RequestAction3, person);
string soapRequest = request3.ToString();
client.AddNewPerson(request3);
這裏有什麼問題嗎?我在服務端放置了TestService名稱空間中的Person類(數據契約):TestService.Person。在服務方面一切都很好。但在VS2008中使用「添加服務引用...」選項向客戶端添加服務引用後,客戶端沒有這種類型(TestService.Person)。我做了什麼來解決這個問題?我只是在客戶端複製了帶有原始數據契約(TestService.Person)的文件,創建了Person類型的對象並將其傳遞給服務方法。
我的問題是 - 我以正確的方式做,還是有另一種方式來做到這一點?
預先感謝您。
戈蘭
爲什麼不讓您的服務方法接受Person參數? –
因爲我們使用更通用的消息類型作爲參數。這是要求。 – tesicg