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:

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;
            }
        }
Concrètement mon architecture est la suivante:

[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


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>
J'ai beau chercher je ne trouve pas de solution.

Merci de votre aide