Как сделать сервис WCF REST с параметром Array - PullRequest
1 голос
/ 24 сентября 2019

Это мой класс:

[DataContract]
public class UserIdParams 
{
    [DataMember]
    public int UserId { get; set; }
    [DataMember]
    public List<int> ListUserId { get; set; }
}

он содержит как список целых, так и целых чисел.

Моя цель - создать службу WCF REST: GetUserByID, чтобы получить список пользователей согласнов идентификаторы

  [OperationContract]
  [WebGet]
  List<User> GetUserByID (UserIdParams userIdParams);

но, как мы знаем, мы не можем передать массив или сложные типы в качестве входного параметра в wcf rest,

(и когда я проверяю это таким образом, у меня есть этоошибка:

enter image description here

С другой стороны, он работал нормально для WCF SOAP.

Так что любую идею, как решить мою проблему, можно получитьвсем пользователям с WCF REST и параметром является массив? спасибо,

1 Ответ

0 голосов
/ 25 сентября 2019

Большое спасибо за dnxit, он предложил мне решение, всегда работая с GET, * Мой старый класс:

public class UserIdParams : CommonParams
 {
[DataMember]
public int UserId { get; set; }
[DataMember]
public List<int> ListUserId { get; set; }     
}
  • и старый сервис:

    [OperationContract]        
    [WebInvoke(Method = "Get", UriTemplate = "GetUserByID")]    
    List<User> GetUserByID(UserIdParams userIdParams);
    

Теперь для исправления этой ошибки и работы выполните WCF REST с параметром Array:

  • модифицированный класс:

    public class UserIdParams : CommonParams
    {
    [DataMember]
    public int UserId { get; set; }
    [DataMember]     
    public string DelimitedUserIds { get; set; }
    }
    

    модифицированный сервис:

     [OperationContract]        
     [WebGet(UriTemplate = "GetUserByID?DelimitedUserIds={DelimitedUserIds}")]
     List<User> GetUserByID(string DelimitedUserIds);
    

И самое главное - добавить: (пример)

string DelimitedUserIds = "9,3,12,43,2"
List<int> UserIds = DelimitedUserIds .Split(',').Select(int.Parse).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...