[WCF] Nested Hashtable Problemi
-
merhaba beyler,
wcf te nested hashtable oluşturuduğumda "The underlying connection was closed: The connection was closed unexpectedly." hatası alıyorum, kodlarım şu şekilde, neden böyle yapıyor bi bilginiz var mı?
//Client
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();remotePlaylistArray = new List<Playlist>(_PlaylistArray);
}return _PlaylistArray;
}
}//Service
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;
kod sadece playlist boş olup değer null olduğu zaman çalışıyor,
} -
hata çok genel, wcf tarafında hataları loglatıyor musun? orada gelen hata nedir?
illaki googleda bakmışsındır requestin boyutu mu sorun teşkil ediyor bilmiyorum
şu linki bir incele. ve mutlaka wcf tarafında tam olarak ne oluyor bir bak
-
edit: lütfen şu operaya bir ayar çekin
ya problem sadece hashtable arrayının içine bir hashtable arrayı daha gömünce çıkıyor, aynı servis üzreinden koca koca byte arraylar problemsiz yürüyor, timeout veya herhangi birşeyinn limitlenmesinden dolayı olcağnı zannetmiyorum,
wcf tede yeniyim ne şekilde hatalraın loglancağını bilmiyorum, ama exception la innerexception aynı, herhangi bir bilgi vermiyor, şimdi hatalar nasıl detaylı loglanır ona bakıyorum
teşekkürler, saygılar.
-
TraceListenerdan gelen data
Type 'System.Collections.Hashtable[]' with data contract name 'ArrayOfArrayOfKeyValueOfanyTypeanyType:http://schemas.microsoft.com/2003/10/Serialization/Arrays' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
hatayı paylaşayım dedim, kafam iyicene sulandı, yarın incelerim
-
wcf verileri alırken serializable/ deserializable kullanıyor. classlarını [serializable] gibi işaretleyip servis kısmında [datacontract] olarak işaretlemen gerekebilir. wcf hiç yazmadım ama az çok mantığını biliyorum.
birde playlists neden static?
-
abi o playlistin olduğu classda static, login olan kullanıcının datalarını tutuyor o yüzden, ayrıca hashtablein içnde sadece int ve string tipinden değerler var zaten, yani herhangi bir işaretleme söz konusu değil,
aah ingilizcemiz olsada ing kitap alıp okıuyabilsek, wcf hakkında 1 tane türkçe kitap yok ya, lise bitsin ing kursuna yazılıcam abi olmuyor böyle :D
