Когда я создал вложенную hastable в wcf, я получаю сообщение об ошибке «Основное соединение было закрыто: соединение было неожиданно закрыто». Я не знаю, где проблема.отправка вложенной хэш-таблицы
Клиентский код
private static List<Playlist> remotePlaylistArray;
private static List<Playlist> _PlaylistArray;
public static List<Playlist> PlaylistArray
{
get
{
if (_PlaylistArray == null)
{
_PlaylistArray = myClient.GetPlaylists(Username, Password, (int)UserInf["id"], "%").Select(i => new Playlist
(
i["name"].ToString(),
true,
((Hashtable[])i["medias"]) == null ? null :
((Hashtable[])i["medias"]).Select(ix => new YoutubeMedia()
{
Duration = ix["duration"].ToString(),
Title = (string)ix["title"],
ID = (string)ix["videoinf"]
}).ToArray()
) { ID = (int)i["id"] }).ToList();//The underlying connection was closed: The connection was closed unexpectedly.
remotePlaylistArray = new List<Playlist>(_PlaylistArray);
}
return _PlaylistArray;
}
Service Code
public IEnumerable<Hashtable> GetPlaylistItems(string username, string password, int pid)
{
return this.ExecuteHashtable("GetPlaylistItems", username, Crypter.DoTwiceMD5(password), pid);
}
public IEnumerable<Hashtable> GetPlaylists(string username, string password, int userid, string filter)
{
List<Hashtable> list = this.ExecuteHashtable("GetPlaylists", username, Crypter.DoTwiceMD5(password), userid, filter).ToList();
foreach (var item in list)
{
Hashtable[] arr = GetPlaylistItems(username, password, (int)item["id"]).ToArray();
item.Add("medias", arr.Length != 0 ? arr : null);
}
return list;
}
исключение происходит из TraceListener является
Тип 'System.Collections.Hashtable []' с именем контракта данных «ArrayOfArrayOfKeyValueOfanyTypeanyType: HTTP : //schemas.microsoft.com/2003/10/Serialization/Arrays 'не ожидается. Подумайте об использовании DataContractResolver или добавьте любые типы, не известные статически в список известных типов - например, с помощью атрибута KnownTypeAttribute или путем добавления их в список известных типов, переданных DataContractSerializer.