Изменение домашней страницы SharePoint не работает, пока я не нажму на название сайта
-
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"); ;
}
}
}
}
.