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

标签 c# .net wcf wcftestclient operationcontract

我正在尝试使用 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; }
}

谢谢。

编辑并回答...
该操作无法通过 WCF 测试客户端使用,因为 MspWebCallType 类型具有 Hashtable 类型的属性。一旦我删除了这个属性,它就解决了这个问题。感谢大家的帮助。

最佳答案

The following is a list of features not supported by WCF Test Client:

  • Types: Stream, Message, XmlElement, XmlAttribute, XmlNode, types that implement the IXmlSerializable interface, including the related XmlSchemaProviderAttribute attribute, and the XDocument and XElement types and the ADO.NET DataTable type.

  • Duplex contract.

  • Transaction.

  • Security: CardSpace , Certificate, and Username/Password.

  • Bindings: WSFederationbinding, any Context bindings and Https binding, WebHttpbinding (Json response message support).

来源:MSDN

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

关于c# - WCF 服务方法在 WCF 测试客户端中不可用,因为它使用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567849/

相关文章:

.net - 为什么在 Visual Studio 2010 中安装了 F# 运行时?

c# - 动态磁贴更新

c# - WPF Slider - 当值从 UI 更改时通知

.net - 如何将 2 个参数传递给 Nant 脚本?

java - 企业服务总线的好处

wcf - 如何修复 SvcUtil 为 C++/CLI WCF 客户端生成错误的代码?

c# - WCF 错误通信对象 System.ServiceModel.Channels.ServiceChanne 不能用于通信,因为它处于故障状态

c# - BinaryFormatter 中的引用完整性

c# - 将程序集加载到新的应用程序域而不是 CurrentDomain

wcf - 如何通过 WCF 序列化 Dictionary<string, string>?