这是WCF服务中的Method签名:
APIMessageList<APISimpleContact> GetMembers(string apiKey, APIContactSearchFilter filter);
Run Code Online (Sandbox Code Playgroud)
APIMessageList
继承自IList
.一旦我为这个WCF服务构建了一个代理,类名就是 APIMessageListOfAPISimpleContactjHldnYZV.
为什么我得不到:APIMessageListOfAPISimpleContact?
它将随机文本添加到界面中每个APIMessageList对象的末尾(有几个)它们都以相同的几个字符结尾 - jHldnYZV.我已经在网上寻找可能的原因,但我找不到任何有这个问题的帖子.
这是一个纯粹的化妆品问题,但这个界面暴露给我们的外部客户,因此它的外观很重要.
有谁知道我为什么会遇到这个问题?
非常感谢
乔
您的解决方案将在http://msdn.microsoft.com/en-us/library/ms731045.aspx.基本上,由于您可以拥有多个"SimpleContract"类(在不同的名称空间中),WCF将在合同名称的末尾添加消歧散列,这是您在合同名称末尾的8个字符中所拥有的.但您可以通过使用CollectionDataContract及其Name属性来控制它:
[CollectionDataContract(Name = "APIMessageListOfSimpleContract")]
public class APIMessageList : IList<SimpleContract> { ... }
Run Code Online (Sandbox Code Playgroud)
我们在使用泛型类型作为返回值时遇到了类似的问题。如果我们没有指定具体类型,则默认数据协定序列化程序或 WCF 序列化程序无法推断返回实体的确切类型。因此,它为返回的类型生成一个随机类名。
在我们的项目中,我们通过构建特定类型的数据协定克服了这个问题,并返回与 WCF 操作调用结果相同的数据协定。
我的猜测是您使用的是泛型类型,并且序列化程序无法推断返回对象的类型。
我建议您创建一个数据传输对象 (DTO) 并从 WCF 服务返回相同的对象。那应该可以解决你的问题。
归档时间: |
|
查看次数: |
1188 次 |
最近记录: |