Le champ S picker de personnes incorporé dans Office documents n’affiche pas la boîte de dialogue « Ajouter des personnes »
Symptôme
Prenons l’exemple du scénario suivant :
- Vous utilisez des Office, tels que des documents Word ou des formulaires InfoPath, qui ont un champ S sélectionneur de personnes incorporé dans le Panneau d’Office’informations.
- Les clients se connectent à un site SharePoint Microsoft à l’aide d’une adresse « https ».
- Il existe un serveur proxy ou un équilibreur de charge entre les clients et les serveurs SharePoint 2010 SharePoint 2013. SSL est interrompu au niveau du serveur proxy ou de l’équilibrage de charge.
Dans ce scénario, lorsque les fichiers sont ouverts dans l’application cliente, les champs incorporés du s picker de personnes n’indiquent aucun résultat visible. En outre, les traces réseau indiquent une erreur « http 500 » pour une demande https qui est envoyée au site SharePoint dans le chemin d’accès suivant :
/_vti_bin/spclaimproviderwebservice.https.svc
Lorsque ce problème se produit, l’Observateur d’événements sur SharePoint serveur web frontal peut afficher un événement semblable à l’entrée suivante :
Log Name: Application
Source: System.ServiceModel 4.0.0.0
Date: <Date and Time>
Event ID: 3
Task Category: WebHost
Level: Error
User: <Service account>
Computer: <FQDN>
Description:
WebHost failed to process a request.
Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/57709411
Exception: System.ServiceModel.ServiceActivationException: The service '/_vti_bin/spclaimproviderwebservice.https.svc' cannot be activated due to an exception during compilation. The exception message is: Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Registered base address schemes are [http]..
---> System.InvalidOperationException: Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Registered base address schemes are [http].
at System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress, Boolean skipHost)
at System.ServiceModel.ServiceHostBase.ApplyConfiguration()
at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
--- End of inner exception stack trace ---
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
Process Name: w3wp
Process ID: <PID> ULS logs from the SharePoint server may contain entries that resemble the following:
<Date and Time> w3wp.exe SharePoint Foundation Runtime fx7n Medium Cannot find factory type for service at /
_vti_bin/spclaimproviderwebservice.https.svc
Cause
Ce problème se produit car SharePoint utilise différents services web pour les sites web, selon que les sites ont des adresses « http » ou « https ». Si le site web utilise « http », l’adresse de service web attendue est spclaimproviderwebservice.svc . Si le site web utilise « https », l’adresse de service web attendue est spclaimproviderwebservice.https.svc .
Dans ce scénario, l’utilisateur navigue vers une adresse « https », mais SSL est terminé sur le serveur proxy ou l’équilibrage de charge. Comme SharePoint serveurs web frontux reçoivent des demandes HTTP, ils s’attendent à ce que le chemin d’accès à la demande de service web soit pour la version http du service. Autrement dit, ils attendent /_vti_bin/spclaimproviderwebservice.svc au lieu de /_vti_bin/spclaimproviderwebservice.https.svc.
Par conséquent, les requêtes /_vti_bin/spclaimproviderwebservice.https.svc pour le service web SSL provoquent l’erreur http 500.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
Méthode A
Ajoutez un iRule au niveau de l’équilibrage de charge ou dans Internet Information Services (IIS) afin que les demandes pour le site https qui incluent le chemin d’accès spclaimproviderwebservice.https.svc changent en http et spclaimproviderwebservice.svc avant que la demande soit transmis au rôle de serveur web frontal SharePoint.
Méthode B
Ajustez la topologie du site web de sorte que SSL soit interrompu sur les serveurs SharePoint au lieu du serveur proxy ou de l’équilibrage de charge.
Informations supplémentaires
Pour la méthode A, la logique suivante est confirmée pour résoudre ce problème :
Règle IIS :
<rule name="SpClaimProviderWebService" stopProcessing="true">
< match url="^(.*)spclaimproviderwebservice.https.svc$" />
< action type="Rewrite" url="{R:1}spclaimproviderwebservice.svc" />
< /rule>
Règle F5/NLB :
when HTTP_REQUEST {
if { [[string tolower] [HTTP::path]] contains "spclaimproviderwebservice.https.svc"} {
HTTP::path [string map {.https ""} [HTTP::path]]
}
}
Encore besoin d’aide ? Accédez au site de la Communauté SharePoint.