![](/img/trans.png)
[英]Wcf DataContract class with enum causes “'Enum value '-1' is invalid for type” error
[英]WCF error with enum collection
这个程序与简单的枚举工作正常。 但是当我想要枚举的集合时,我启动时会出现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,
}
错误是:
操作'TestEnum'合同Isale有一个名为'productRetrieveOptions'的请求变量'System.Collections.Generic.ICollection 1 [DTO.ProductRetrieveOption] ', but the type' System.Collections.Generic.ICollection
1 [DTO.ProductRetrieveOption]'是不能与'QueryStringConverter'转换。 UriTemplate查询值的变量必须具有可由“QueryStringConverter”转换的类型。
我尝试了IList,[],IEnumarable和ICollection,并且Ialways也遇到了同样的错误。
谢谢你的帮助
您需要实现自己的QueryStringConverter
版本。 请参阅https://blogs.msdn.microsoft.com/carlosfigueira/2011/08/08/wcf-extensibility-querystringconverter/
最后这是一个非常基本的错误
[OperationContract]
[FaultContract(typeof(ErrorData))]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "TestEnum")]
string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.