这个程序适用于简单的枚举。 但是当我想要一个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,
}
错误是:
Operation&#39; TestEnum&#39;合同Isale有一个名为&#39; productRetrieveOptions&#39;的请求变量。类型&#39; System.Collections.Generic.ICollection 1 [DTO.ProductRetrieveOption] ', but the type' System.Collections.Generic.ICollection
1 [DTO.ProductRetrieveOption]&#39;不能转换为&#39; QueryStringConverter&#39;。 UriTemplate查询值的变量必须具有可由&#39; QueryStringConverter转换的类型。
我尝试使用IList,[],IEnumarable和ICollection,并且Ialways也遇到了同样的错误。
感谢您的帮助
答案 0 :(得分:0)
您需要实现自己的QueryStringConverter
版本。见https://blogs.msdn.microsoft.com/carlosfigueira/2011/08/08/wcf-extensibility-querystringconverter/
答案 1 :(得分:0)
最后这是一个非常基本的错误
[OperationContract]
[FaultContract(typeof(ErrorData))]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "TestEnum")]
string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions);