生のメッセージ (メッセージ クラス) を使用する 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 名前空間: TestService.Person に配置されるサービス側に Person クラス (データ コントラクト) があります。サービス面ではすべて問題ありません。しかし、VS2008で「サービス参照の追加...」オプションを使用してクライアント側にサービス参照を追加した後、クライアント側にそのようなタイプ(TestService.Person)はありません。この問題を解決するために何をしましたか? クライアント側で元のデータ コントラクト (TestService.Person) を含むファイルをコピーし、Person 型のオブジェクトを作成してサービス メソッドに渡しました。
私の質問は - 私は正しい方法でそれをやったのですか、それともこれを行う別の方法がありますか?
前もって感謝します。
ゴラン