Erreur ContractFilter lors de l’interrogation à partir de la zone autre que la zone par défaut dans une batterie de serveurs

Symptômes

Dans une batterie de serveurs SharePoint Server 2013 ou 2016, vous recevez l’erreur ContractFilter suivante après avoir exécuté une requête à partir de la zone autre que Default :

An unknown error occurred. ---> System.ServiceModel.ActionNotSupportedException: The message with Action 'http://tempuri.org/ISearchQueryServiceApplication/IsUrlMappingCached' cannot be processed at the receiver, due to a ContractFilter mismatch    

at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None). Server stack trace:  

at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)  

at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)  

at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)  

at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)  

at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown  

at [0]:  

Ce problème se produit généralement lorsqu’une application de service de recherche publiée est consommée par une autre batterie de serveurs (par exemple, l’application est publiée par la batterie de serveurs A, mais consommée par la batterie B).

Cause

Les serveurs ont des builds incompatibles. Le isURLMappingCached utilisé pour convertir l’URL de vos résultats de recherche est modifié entre les builds. Vous découvrez l’erreur ContractFilter si l’origine de la requête et le proxy de recherche sont sur deux serveurs qui ont une logique URLMapper différente.

Résolution

Pour résoudre ce problème, assurez-vous que les batteries de serveurs et tous les serveurs de ces batteries ont la même build. Assurez-vous que la même mise à jour cumulative est installée sur tous les serveurs et que l’outil en ligne de commande Psconfig peut être exécuté correctement.

Informations supplémentaires

Encore besoin d’aide ? Go to SharePoint Community.