J'ai un webservice WCF qui expose une méthode Search() qui prend en paramètre le datacontrat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 [DataContract] public class SearchQuery { [DataMember] public Dictionary<string, KeyValuePair<string, int>> QueryFilter; public SearchQuery(); [DataMember(EmitDefaultValue = true)] public int MaxResponsePerPage { get; set; } [DataMember] public int NeedPageIndex { get; set; } [DataMember(EmitDefaultValue = true)] public string Query { get; set; } [DataMember(EmitDefaultValue = true)] public bool SafeSearch { get; set; } [DataMember(EmitDefaultValue = true)] public bool TypeOfQuery { get; set; } }
J'ai ajouté a mon client une référence de service vers heu ce service dans mon client en utilisant le wizzard de vst 2008.
Mon soucis vient du fait que mon webservice relai des données en fait, quand la fonction Search() exposée est invoquer les données sont transmises à une autre application nommée QueryServer qui maintient un index fulltext lucene
voici la fonction qui permet de faire cela:
Concrètement mon architecture est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public List<SearchContract.SearchData> Search(SearchContract.SearchQuery Querydata) { try { // Envoie des données au QueryServer ChannelFactory<IRemoteOperations.ISearch> _search = new ChannelFactory<IRemoteOperations.ISearch>("QueryServer"); IRemoteOperations.ISearch _s = _search.CreateChannel(); return _s.Search(Querydata); } catch { return null; } }
[page.aspx] <-> [webservice] <-> [queryserver]
Mon problème est que mon queryserver ne comprend pas les données qui lui sont transmises et renvoie l'erreur suivante
J'ai beau chercher je ne trouve pas de solution.
Un message inconnu … ‚t‚ re‡ue par le service wcf, sur l'ordinateur PC-de-axelle,
Message :<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/ISearch/Search</a:Action>
<a:MessageID>urn:uuid:e712fca9-8d5a-4569-8f65-b35c66ee16bc</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">net.tcp://localhost:1550/</a:To>
</s:Header>
<s:Body>
<Search xmlns="http://tempuri.org/">
<Querydata xmlns:b="http://schemas.datacontract.org/2004/07/SearchContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<b:MaxResponsePerPage>10</b:MaxResponsePerPage>
<b:NeedPageIndex>1</b:NeedPageIndex>
<b:Query>merise</b:Query>
<b:QueryFilter xmlns:c="http://schemas.microsoft.com/2003/10...ization/Arrays">
</b:QueryFilter>
<b:SafeSearch>false</b:SafeSearch>
<b:TypeOfQuery>false</b:TypeOfQuery>
</Querydata>
</Search>
</s:Body>
</s:Envelope>
Merci de votre aide
Partager