2016-04-13 2 views
1

Эта программа отлично работает с простым перечислением. Но когда я хочу, чтобы коллекция enum имела ошибку WCF, когда я запускаю ее.Ошибка WCF с перечислением enum

[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' Исаль имеет переменную запроса с именем '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 получил такую ​​же ошибку.

Спасибо за вашу помощь

ответ

0

Finaly это было довольно основной ошибкой

[OperationContract] 
    [FaultContract(typeof(ErrorData))] 
    [WebInvoke(Method = "POST", 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "TestEnum")] 
    string TestEnum(ICollection<DTO.ProductRetrieveOption> productRetrieveOptions); 
Смежные вопросы