【发布时间】:2017-10-03 01:45:07
【问题描述】:
我正在制作 WCF 服务,并且存在一个将与该服务进行通信的客户端,并且该客户端希望响应采用给定格式。
这就是我使用 MessageContract 的原因。但是,客户端将原始类型作为参数。
有没有办法让我的服务使用 MessageContract 接受原始类型作为参数?
这是我创建的合约的代码。
[ServiceContract]
[XmlSerializerFormat]
public interface IService
{
[OperationContract]
contentListResult getContentList();
}
//SVC
public contentListResult getContentList()
{
//Implementation
}
//Classes
[MessageContract(IsWrapped = false)]
public class contentListResult
{
[MessageBodyMember]
public contentList contentList { get; set; }
}
[MessageContract(IsWrapped = false)]
public class contentList
{
//Some properties
}
这一切都有效,但是当我尝试将参数放入服务(int Id,字符串 foo)时,它会刹车,因为当使用消息契约时,参数显然需要是对象。
有没有办法解决这个问题?
【问题讨论】:
-
这里的原始类型到底是什么?你能展示一下你设计的Messagecontract的代码吗?
-
我用代码更新了问题,谢谢。
-
你试过用 knowntype 属性装饰吗?
-
不,我不熟悉,我会查一下。
-
好的,只是为了确保我们在同一页面上,我需要能够像 client.getContentList(int, string, string) 这样调用服务。我不明白使用已知类型进行装饰有什么帮助。