从服务器场中的非默认区域查询时出现 ContractFilter 错误

症状

在 SharePoint Server 2013 或 2016 场中,从非默认区域运行查询后,会收到以下 ContractFilter 错误:

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]:  

当另一个服务器场使用已发布的 Search Service (SSA) 时,通常会发生此问题 (例如,该应用程序由服务器场 A 发布,但由服务器场 B) 使用。

原因

服务器具有不兼容的生成。 用于转换搜索结果 URL 的 IsURLMappingCached 在内部版本之间会发生变化。 如果查询源和搜索代理位于两个具有不同的 URLMapper 逻辑的服务器上,则遇到 ContractFilter 错误。

解决方案

若要解决此问题,请确保服务器场和服务器场中所有服务器具有相同的内部版本。 确保所有服务器都安装了相同的累积更新,并且 Psconfig 命令行工具可以成功运行。

更多信息

仍然需要帮助? 请转到 SharePoint 社区