我正在尝试使用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<RequestParameter> RequestParameters { get; set; }
[DataMember]
public List<MspWebCallType> MspWebCallsForXmlRequest { get; set; }
[DataMember]
public Hashtable XmlRequestParameters { get; set; }
public Request(string loanNumber, string clientCode, Region region, RequestType requestType, List<RequestParameter> 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测试客户端进行该操作。一旦我删除了这个属性,就解决了这个问题。感谢大家的帮助。
答案 0 :(得分:27)
以下是WCF测试客户端不支持的功能列表:
类型:Stream,Message,XmlElement,XmlAttribute,XmlNode,类型 实现IXmlSerializable接口,包括相关的 XmlSchemaProviderAttribute属性,以及XDocument和XElement 类型和ADO.NET DataTable类型。
双面合同。
交易。
安全性:CardSpace,证书和用户名/密码。
绑定:WSFederationbinding,任何Context绑定和Https绑定, WebHttpbinding(Json响应消息支持)。
来源:MSDN
检查Msp.FavReadViews
和Msp.DsReadIndicators
以确保其符合要求。
答案 1 :(得分:0)
可能是因为Request
需要一个公共非参数构造函数。
答案 2 :(得分:0)
在此回答,因为这是Google目前针对此错误的第一个结果:
除了@Igby Largeman的回答之外,如果您的操作或数据合同中的某个地方使用了不可序列化的类型,您也会收到此错误。
以.NET中的Exception类为例...
我有一个案例,我的团队中的开发人员选择通过DTO将Exception对象发送回服务的客户端,而不是手动将异常消息放入DTO。 Visual Studio不会在构建时(它确实应该)警告您该类不可序列化,它只会在运行时失败。
因此,如果您收到此错误并排除了上述答案,请确保检查合同和DTO中使用的类型;不可序列化的东西可能是你的罪魁祸首。
我希望能节省一些时间。
答案 3 :(得分:0)
我遇到了同样的错误,问题是该类有一个System.Drawing.Image属性。我从课堂上删除了它并且它有效。我将字节数组转换为base64字符串。