La modifica della home page di SharePoint non funziona fino a quando non faccio clic sul titolo del sito

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/59021

  •  10-12-2019
  •  | 
  •  

Domanda

Sto installando un sito secondario in SharePoint 2010 utilizzando PowerShell.Per tutti i sub-siti, abbiamo configurato SharePoint per avviare una particolare pagina predefinita del sottotitoli.aspx come pagina di destinazione dopo il log-in.Per il mio caso d'uso, voglio sovrascrivere questo comportamento, lanciando una pagina creata come parte di una funzione utilizzata in questo sito secondario.Sto affrontando così usando il seguente codice in EventReCiever.cs:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    using (var currentWeb = properties.Feature.Parent as SPWeb)
    {
        if (currentWeb != null)
        {
            var root = currentWeb.RootFolder;
            if (root != null)
            {
                root.WelcomePage = @"Management\Pages\LandingPage.aspx";
                root.Update();
            }

            //this.AddNavigationNodes(currentWeb);
        }
    }

    base.FeatureActivated(properties);
}
.

Il codice non funziona fino a quando non faccio clic sul titolo del sito (in alto a sinistra) o abilitare e quindi riattivare la funzione.Sembra che il codice abbia bisogno di qualche tipo di evento di innesco.Sto facendo qualcosa di sbagliato?Per favore aiuto ...

È stato utile?

Soluzione

Questo codice nel ricevitore dell'evento funzione verrà eseguito dopo il completamento dell'attivazione della funzione.

da msdn spfeatureurerceeiver.CoatureAttived Method :

.

Gestisce l'evento sollevato dopo che una funzione è attivata.

e

.

Questo metodo viene chiamato quando viene attivata una funzione.

Se desideri arbitrariamente impostare la tua pagina di benvenuto che potresti utilizzare l'utente PowerShell come:

$site = Get-SPSite -Identity "http://server:port/";
$web = $site.OpenWeb("WebName");
$web.RootFolder.WelcomePage = "/Path/Page.aspx";
$web.Update();
$web.Dispose();
$site.Dipose();
Write-Host "Successfully updated the Welcome Page"
.

Altri suggerimenti

Un'altra alternativa sarebbe quella di attendere intenzionalmente fino a quando l'utente colpisce il sito e utilizzare un controllo iniettato in head a pagina aggiuntiva che imposta il valore, reindirizza l'utente e si disattiva.

File di elementi:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control
    Id="AdditionalPageHead"
    Sequence="1000"
    ControlSrc="~/_controltemplates/MySites.Branding/WebPartInjector.ascx">
  </Control>
</Elements>
.

Codice dietro per iniettore.ASCX:

public partial class WebPartInjector : UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        using (new SPMonitoredScope("MySites.Branding WebPartInjector Page_Load"))
        {
            SPWeb curWeb = SPContext.Current.Web;

            try
            {
                //*******DO STUFF HERE********

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    try
                    {
                        curWeb.Features.Remove(new Guid("This-is-where-you-put-the-guid-of-the-feature"));
                    }
                    catch
                    {
                        //swallowing deactivation of self error 
                    }

                });
                curWeb.AllowUnsafeUpdates = false;
                Context.Response.Redirect(curWeb.Url);

            }
            catch (Exception g)
            {

                Logger.LogError(g, "WebPartInjector"); ;
            }
        }
    }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top