Comment obtenir l'en-tête de l'hôte sur quelle collection de sites est hébergée ?
-
09-12-2019 - |
Question
Par exemple, la structure de mes collections de sites est la suivante :
http://testserver1.com/sites/sitecollection1
http://testserver1.com/sites/sitecollection2
http://testserver1.com/sitecollection3
http://testserver1.com/team/sitecollection4
Je veux obtenir http://testserver1.com (en-tête de l'hôte) à partir du code ?comment puis-je le faire en utilisant le modèle objet ?Y a-t-il un problème si un mappage d’accès alternatif est également configuré sur ces collections de sites ?
La solution
Vous pouvez utiliser SPContext.Current.Site.HostName
propriété pour obtenir le nom d'hôte ?
Normalement, vous pouvez utiliser SPContext.Current.Site.Url
pour renvoyer l'URL du site Web racine dans la collection de sites pour la requête Web en cours.Si vous voulez le contexte du site Web actuel, utilisez SPContext.Current.Web.Url.
Autres conseils
Lorsque vous dites "Hôte-Hébergeur", je suppose que vous vous référez à l'application Web à laquelle appartiennent vos collections de votre site.Avec cela à l'esprit, vous pouvez utiliser la collection SPWEBApplication's
Comme il est possible de disposer de plusieurs URL associées à une seule application Web, vous devez itérer via cette collection pour obtenir / trouver l'en-tête d'hôte souhaité.Par exemple:
SPAlternateUrlCollection allUrls = SPContext.Current.Site.WebApplication.AlternateUrls;
foreach (SPAlternateUrl url in allUrls)
{
// Do something with each url.Uri.ToString()
}
Notez que vous devrez ajouter une référence à