WCF错误与枚举集合
问题描述:
该程序工作正常,简单的枚举。 但是,当我想要一个枚举集合时,我启动它时会出现WCF错误。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/
答
Finaly这是很基本的错误
[OperationContract]
[FaultContract(typeof(ErrorData))]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "TestEnum")]
string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);
谢谢你的答案。事实上,我们可以使用复杂的类型,但是我们必须使用POST,而不是uritemplate – JEB