C# 如何将枚举集合发送到WCF服务

C# 如何将枚举集合发送到WCF服务,c#,wcf,collections,enums,C#,Wcf,Collections,Enums,向WCF服务方法发送枚举集合时遇到问题。我用这篇文章作为指导: 是否需要创建自定义QueryStringConverter 谢谢 您的配置文件是什么样子的?听起来您可能正在使用webHttpBinding元素,该元素不支持IList,因为这在URL上是不可能表示的 您应该考虑使用basicHttpBinding,因为它使用SOAP。使用SOAP将允许您序列化IList,并将其发送到您的OperationContract是否可以将该参数改为MyEnum数组?然后在您的实现中只需使用var eLis

向WCF服务方法发送枚举集合时遇到问题。我用这篇文章作为指导:

是否需要创建自定义QueryStringConverter


谢谢

您的配置文件是什么样子的?听起来您可能正在使用
webHttpBinding
元素,该元素不支持
IList
,因为这在URL上是不可能表示的


您应该考虑使用
basicHttpBinding
,因为它使用SOAP。使用SOAP将允许您序列化IList,并将其发送到您的
OperationContract

是否可以将该参数改为MyEnum数组?然后在您的实现中只需使用var eList=newlist(e);或者,您可以尝试使用KnownType助手类,如下所述:

我正在使用
webHttpBinding
元素,通过传递查询字符串上的参数的简单Get请求调用我的服务。为什么
webHttpBinding
不序列化枚举列表
webHttpBinding
将序列化对象列表。我以前尝试将参数类型更改为MyEnum数组,但该参数仍无法序列化。我还使用了ServiceKnownType属性,如上面的示例所示,但这也无助于解决这个问题。
[ServiceContract]
[ServiceKnownType(typeof(MyEnum))]
[ServiceKnownType(typeof(List<MyEnum>))]
public interface IMyService{    
  [OperationContract]    
  MyEnum ServiceMethod1( );

  [OperationContract]    
  IList<MyEnum> ServiceMethod2( );

  [OperationContract]    
  IList<MyEnum> ServiceMethod3( MyEnum e );

  [OperationContract]    
  IList<MyEnum> ServiceMethod4( IList<MyEnum> e );
}

[Serializable]
[DataContract]
public enum MyEnum{ 
  [EnumMember] red, 
  [EnumMember] green, 
  [EnumMember] blue 
};
Operation 'ServiceMethod4' in contract 'IMyService' has a query variable named 'e' of type 'System.Collections.Generic.IList`1[MyEnum]', but type 'System.Collections.Generic.IList`1[MyEnum]' is not convertible by 'QueryStringConverter'.  Variables for UriTemplate query values must have types that can be converted by 'QueryStringConverter'.