Изменение домашней страницы SharePoint не работает, пока я не нажму на название сайта

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

  •  10-12-2019
  •  | 
  •  

Вопрос

Я устанавливаю подставки в SharePoint 2010, используя PowerShell.Для всех подмысел мы настроили SharePoint, чтобы запустить определенную страницу по умолчанию .aspx в качестве посадки после входа в систему.Для моего применения я хочу переопределить это поведение, запустив созданную страницу в качестве части функции, используемой на этом подсхеме.Я занимаюсь, используя следующий код в 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);
}
.

Код не работает до тех пор, пока я не нажму на заголовок сайта (сверху слева) или включить, а затем повторно включить функцию.Похоже, код нуждается в какое-то время срабатывания события.Я делаю что-то неправильно?Пожалуйста, помогите ...

Это было полезно?

Решение

Этот код в вашем приемке событий функций будет работать после завершения активации вашей функции.

от msdn spfeatureceureceiver.featureActived метод :

обрабатывает событие, которое поднимается после активации функции.

и

Этот метод называется, когда функция активирована.

Если вы хотите произвольно установить страницу приветствия, вы можете пользователь PowerShell вроде:

$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"
.

Другие советы

Другая альтернатива будет намеренно ждать, пока пользователь не попадет на сайт и использовать управление, введенное в дополнительную головку страницы, которая устанавливает значение, перенаправляет пользователя и деактивировать.

Элементы Файл:

<?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>
.

код позади для инжектора.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"); ;
            }
        }
    }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top