C# 枚举集合出现WCF错误

C# 枚举集合出现WCF错误,c#,wcf,collections,enums,C#,Wcf,Collections,Enums,这个程序可以很好地处理简单枚举。 但是,当我想要一个enum集合时,启动它时会出现WCF错误 [OperationContract] [FaultContract(typeof(ErrorData))] [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTem

这个程序可以很好地处理简单枚举。 但是,当我想要一个enum集合时,启动它时会出现WCF错误

    [OperationContract]
    [FaultContract(typeof(ErrorData))]
    [WebInvoke(Method = "GET",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "TestEnum?productRetrieveOptions={productRetrieveOptions}")]
    string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);



    public string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions)
    {
        return string.Format("OK ({0})", productRetrieveOptions);
    }



[DataContract]
public enum ProductRetrieveOption : int
{
    [System.Runtime.Serialization.EnumMemberAttribute()]
    //[EnumMember]
    Stock = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    //[EnumMember]
    RightAssociated = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    //[EnumMember]
    ValidityDate = 2,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    //[EnumMember]
    FullTariff = 3,
} 
[运营合同]
[FaultContract(类型(错误数据))]
[WebInvoke(Method=“GET”,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json,
UriTemplate=“TestEnum?productRetrieveOptions={productRetrieveOptions}”)]
字符串TestEnum(ICollection productRetrieveOptions);
公共字符串TestEnum(ICollection productRetrieveOptions)
{
返回string.Format(“确定({0})”,productRetrieveOptions);
}
[数据合同]
公共枚举ProductRetrieveOption:int
{
[System.Runtime.Serialization.EnumMemberAttribute()]
//[委员]
股票=0,
[System.Runtime.Serialization.EnumMemberAttribute()]
//[委员]
RightAssociated=1,
[System.Runtime.Serialization.EnumMemberAttribute()]
//[委员]
有效碘酸盐=2,
[System.Runtime.Serialization.EnumMemberAttribute()]
//[委员]
全关税=3,
} 
错误是:

操作“TestEnum”协定Isale具有名为“productRetrieveOptions”类型“System.Collections.Generic.ICollection
1[DTO.ProductRetrieveOption]”的请求变量,但类型“System.Collections.Generic.ICollection
1[DTO.ProductRetrieveOption]”不能与“QueryStringConverter”转换。UriTemplate查询值的变量必须具有可由“QueryStringConverter”转换的类型

我尝试了IList、[]、IEnumarable和ICollection,但总是遇到同样的错误


感谢您的帮助

您需要实现自己版本的
QueryStringConverter
。请参见

您需要实现自己版本的
QueryStringConverter
。最后,这是一个非常基本的错误

    [OperationContract]
    [FaultContract(typeof(ErrorData))]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "TestEnum")]
    string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);
[运营合同]
[FaultContract(类型(错误数据))]
[WebInvoke(Method=“POST”,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json,
UriTemplate=“TestEnum”)]
字符串TestEnum(ICollection productRetrieveOptions);

最后,这是一个非常基本的错误

    [OperationContract]
    [FaultContract(typeof(ErrorData))]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "TestEnum")]
    string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);
[运营合同]
[FaultContract(类型(错误数据))]
[WebInvoke(Method=“POST”,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json,
UriTemplate=“TestEnum”)]
字符串TestEnum(ICollection productRetrieveOptions);

谢谢您的回答。事实上,我们可以使用复杂类型,但我们必须在UriTemplate中使用POST和nothing。谢谢您的回答。事实上,我们可以使用复杂类型,但我们必须在模板中使用POST和nothing