Come ottenere intestazione host su quale raccolta del sito è in possesso?
-
09-12-2019 - |
Domanda
Ad esempio La struttura delle mie collezioni del sito è la seguente:
http://testserver1.com/sites/sitecollection1
http://testserver1.com/sites/sitecollection2
http://testserver1.com/sitecollection3
http://testserver1.com/team/sitecollection4
Voglio ottenere http://testserver1.com (header host) dal codice?Come posso farlo usando il modello oggetto?C'è un problema se abbiamo anche la mappatura degli accessi alternativa configurata anche su queste raccolte di siti?
Soluzione
È possibile utilizzare la proprietà SPContext.Current.Site.HostName
per ottenere il nome host?
Normalmente è possibile utilizzare SPContext.Current.Site.Url
per restituire l'URL del sito Web principale nella raccolta del sito per la richiesta Web corrente.Se si desidera il contesto del sito Web corrente, utilizzare SPContext.Current.Web.Url.
Altri suggerimenti
Quando dici "Host Header", presumo che ti riferisca all'applicazione Web a cui appartiene le tue raccolte del sito.Con questo in mente, è possibile utilizzare la collezione Alternateurls SPWebApplication> per ottenere l'intestazione host associata a quell'applicazione Web.
Dal momento che è possibile avere più URL associati a un'unica applicazione Web, è necessario eseguire la iterata attraverso questa raccolta per ottenere / trovare l'intestazione host che desideri.Ad esempio:
.
SPAlternateUrlCollection allUrls = SPContext.Current.Site.WebApplication.AlternateUrls;
foreach (SPAlternateUrl url in allUrls)
{
// Do something with each url.Uri.ToString()
}
Nota che è necessario aggiungere un riferimento a Microsoft.SharePoint.administration per utilizzare questo codice.