WCF服务方法在WCF测试客户端中不可用,因为它使用类型

我正在尝试使用WCF测试客户端来测试我构建的WCF服务。

该服务有一个方法“SubmitRequest”。

[OperationContract] Response SubmitRequest(Request request); 

当我加载WCF测试客户端时,该方法显示为灰色“WCF测试客户端不支持此操作,因为它使用类型WcfLibrary.Objects.Request

下面是类型定义,有人看错了吗?

 [DataContract] public class Request { [DataMember] public string LoanNumber { get; set; } [DataMember] public string ClientCode { get; set; } [DataMember] public Region Region { get; set; } [DataMember] public RequestType RequestType { get; set; } [DataMember] public List RequestParameters { get; set; } [DataMember] public List MspWebCallsForXmlRequest { get; set; } [DataMember] public Hashtable XmlRequestParameters { get; set; } public Request(string loanNumber, string clientCode, Region region, RequestType requestType, List requestParameters) { LoanNumber = loanNumber; ClientCode = clientCode; Region = region; RequestType = requestType; RequestParameters = requestParameters; } } [DataContract] public class MspWebCallType { [DataMember] public string WebService { get; set; } [DataMember] public string Operation { get; set; } [DataMember] public string Version { get; set; } [DataMember] public Hashtable Parameters { get; set; } [DataMember] public Msp.FavReadViews FAVReadViewIndicator { get; set; } [DataMember] public Msp.DsReadIndicators DSReadInidicator { get; set; } } [DataContract] public enum Region { [EnumMember] P2, [EnumMember] PROD } [DataContract] public enum RequestType { [EnumMember] None, [EnumMember] XmlRequest, [EnumMember] SomeOtherRequestType } [DataContract] public struct RequestParameter { [DataMember] public string ParameterName { get; set; } [DataMember] public string ParameterValue { get; set; } } 

谢谢。

编辑带答案……
由于MspWebCallType类型具有Hashtable类型的属性,因此无法通过WCF测试客户端进行该操作。 一旦我删除了这个属性,就解决了这个问题。 谢谢大家的帮助。

以下是WCF测试客户端不支持的function列表:

  • 类型:Stream,Message,XmlElement,XmlAttribute,XmlNode,实现IXmlSerializable接口的类型,包括相关的XmlSchemaProviderAttribute属性,以及XDocument和XElement类型以及ADO.NET DataTable类型。

  • 双工合同。

  • 交易。

  • 安全性:CardSpace,证书和用户名/密码。

  • 绑定:WSFederationbinding,任何Context绑定和Https绑定,WebHttpbinding(Json响应消息支持)。

资料来源: MSDN

检查Msp.FavReadViewsMsp.DsReadIndicators以确保它们符合要求。

这可能是因为Request需要有一个公共的非参数构造函数。

在此回答这是Google目前针对此错误的第一个结果:

除了@Igby Largeman的回答之外,如果您的操作或数据合同中的某个地方使用了不可序列化的类型,您也会收到此错误。

举一个.NET中的Exception类的例子……

我有一个案例,我的团队中的开发人员选择通过DTO将Exception对象发送回服务的客户端,而不是手动将exception消息放入DTO。 Visual Studio不会在构建时(它确实应该)警告您该类不可序列化,它只会在运行时失败。

因此,如果您收到此错误并排除了上述答案,请确保检查合同和DTO中使用的类型; 不可序列化的东西可能是你的罪魁祸首。

我希望这能节省一些时间。

我有同样的错误,问题是该类有一个System.Drawing.Image属性。 我从class级中删除它并且它有效。 我将字节数组转换为base64字符串。