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

thi*_*ag0 14 .net c# wcf wcftestclient operationcontract

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

该服务有一个方法"SubmitRequest".

[OperationContract]
Response SubmitRequest(Request request);
Run Code Online (Sandbox Code Playgroud)

当我加载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; }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

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

Igb*_*man 27

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

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

  • 双工合同.

  • 交易.

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

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

资料来源:MSDN

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