首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF:如何在客户端创建一个对象作为消息的参数

WCF:如何在客户端创建一个对象作为消息的参数
EN

Stack Overflow用户
提问于 2012-10-12 15:08:07
回答 1查看 208关注 0票数 1

我有使用原始消息(Message类)的WCF服务。

1)服务端:

代码语言:javascript
运行
复制
[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)客户端:

代码语言:javascript
运行
复制
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);

这里有什么问题?我在服务端有一个Person类(数据契约),放在TestService名称空间: TestService.Person中。服务端的一切都很好。但是在我使用"Add service Reference...“将服务引用添加到客户端之后。选项,但客户端没有这样的类型(TestService.Person)。我做了什么来解决这个问题?我只是在客户端复制了带有原始数据契约(TestService.Person)的文件,创建了Person类型的对象并将其传递给服务方法。

我的问题是--我这样做是正确的,还是有另一种方法呢?

提前谢谢你。

Goran

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 15:26:22

因为Person类不会在您的任何服务契约中公开,所以它们的信息不会通过服务元数据共享。这就是为什么你会在客户端得到一个错误。如果您使用相同的命名空间将这些类复制到您的客户端,则可以这样做。

但是,更好的解决方案是将Person类放在另一个程序集中,并从客户端引用此程序集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12853954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档