Walkthrough: criar um objeto do Serviço de conteúdo
Esta explicação passo a passo explora como definir a lógica para um personalizado serviço para gerenciar site de conteúdo em uma implantação Windows SharePoint Services wssnoversshort. O exemplo mostra como criar classes que derivar de classes do espaço para nome Microsoft.SharePoint.Administration N:Microsoft.SharePoint.Administration para persistir personalizado administrativo configurações na banco de dados. O exemplo inclui arquivos classe que dados implementar estruturas que contêm metadados sobre uma lista de locais. Cada de conteúdo localidade especifica um URL que deve ser preservado.
O exemplo inclui criando codificar arquivos para o seguinte classes:
ContentService define o de alto nível objeto, que é derivado do SPService T:Microsoft.SharePoint.Administration.SPService classe e fornece a lógica para gerenciar de conteúdo locais em uma implantação. Essa classe inclui os construtores para inicializar o objeto ContentService ContentService, bem como membros para recuperar o de conteúdo serviço e sua coleção de de conteúdo locais.
ContentLocationCollection define uma classe coleção que herda o SPPerisistedChildCollection T:Microsoft.SharePoint.Administration.SPPerisistedChildCollection classe e fornece um objeto para conter de conteúdo locais. Esta classe contém um construtor e um Add Adicionar método.
ContentLocation herda de SPPersistedObject e define um de conteúdo localidade. Essa classe inclui os construtores e membros para personalizado propriedade configurações.
Bem como criar um assembly com os arquivos codificar anterior, o exemplo mostra como usar um ação personalizada de recursos para adicionar um link na página de operações para que os administradores possam acessar o serviço. O exemplo também descreve como usar personalizado páginas .ASPX para fornecem interface de usuário que é exigido para gerenciar o de conteúdo serviço e sua de conteúdo itens localidade. Para obter informações sobre como criar um projeto Windows SharePoint Services wssnoversshort em Microsoft Visual Studio 2005, consulte Guia de Introdução Com programaticamente personalizar uma Web Site SharePoint em Visual Studio Programmatically Customizing.
Arquivo de classe ContentService
O seguinte exemplo de código define uma enumeração FormatType FormatType e o de alto nível ContentService classe, que inclui o seguinte e construtores membros:
Local A propriedade estática para recuperar o atual de conteúdo serviço localidade.
Locais A propriedade estática para acessar o de conteúdo coleção localidade.
GetAllContentLocations um método para retornar todos os de conteúdo locais fornecidas através de serviço.
A propriedade Formato para get ou definir o tipo de formato para o de conteúdo serviço.
Na parte superior de cada arquivo codificar que é apresentado posteriormente, adicionar uma diretiva para importação de Microsoft.SharePoint.Administration espaço para nome, as in o seguinte exemplo. Use o atributo Persisted persistente para tornar propriedade persistir configurações no banco de dados. O personalizado espaço para nome que contém objetos em de exemplo é nomeado MS.Samples.SharePoint.ContentManager.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint.Administration
Namespace MS.Samples.SharePoint.ContentManager
Public Enum FormatType
HTML
XML
End Enum 'ContentLocationType
<System.Runtime.InteropServices.Guid("BB69A6EB-3230-43ca-B4F5-752EAC39C74A")> _
Public Class ContentService
Inherits SPService
<Persisted()> _
Private formatType As FormatType
Private Shared locations As ContentLocationCollection
Private Shared local As ContentService = Nothing
' A static property that retrieves the content service.
Public Shared ReadOnly Property Local() As ContentService
Get
If ContentService.local Is Nothing Then
ContentService.local = _
SPFarm.Local.Services.GetValue < ContentService > "ContentService"
End If
Return ContentService.local
End Get
End Property
' A static property for accessing the location collection.
Public Shared ReadOnly Property Locations() As ContentLocationCollection
Get
If Me.locations Is Nothing Then
Me.locations = New ContentLocationCollection(Me)
End If
Return Me.locations
End Get
End Property
' An empty public constructor required for serialization.
Public Sub New()
End Sub 'New
Public Sub New(farm As SPFarm)
MyBase.New("ContentService", farm)
' Add code to initialize as needed.
End Sub 'New
' A method to retrieve the content location collection.
Public Function GetAllContentLocations() As ContentLocationCollection
Dim service As ContentService = ContentService.Local
If service Is Nothing Then
Return Nothing
End If
Return service.Locations
End Function 'GetAllContentLocations
Public Property Format () As FormatType
Get
Return Me.formatType
End Get
Set
Me.formatType = value
End Set
End Property
End Class 'ContentService
End Namespace 'MS.Samples.SharePoint.ContentManager
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;
namespace MS.Samples.SharePoint.ContentManager
{
public enum FormatType
{
HTML,
XML
}
[System.Runtime.InteropServices.Guid("BB69A6EB-3230-43ca-B4F5-752EAC39C74A")]
public class ContentService : SPService
{
[Persisted]
private FormatType formatType;
private static ContentLocationCollection locations;
private static ContentService local = null;
/* A static property that retrieves the content service. */
public static ContentService Local
{
get
{
if (ContentService.local == null)
{
ContentService.local =
SPFarm.Local.Services.GetValue<ContentService>("ContentService");
}
return ContentService.local;
}
}
/* A static property for accessing the location collection. */
public static ContentLocationCollection Locations
{
get
{
if (this.locations == null)
{
this.locations = new ContentLocationCollection(this);
}
return this.locations;
}
}
/* An empty public constructor required for serialization. */
public ContentService()
{;}
public ContentService(SPFarm farm)
: base("ContentService", farm)
{/* Add code to initialize as needed. */}
/* A method to retrieve the content location collection. */
public ContentLocationCollection GetAllContentLocations()
{
ContentService service = ContentService.Local;
if (service == null)
{
return null;
}
return service.Locations;
}
public FormatType Format
{
get
{
return this.formatType;
}
set
{
this.formatType = value;
}
}
}
}
Definir um personalizado fornecer método para adicionar o objeto ContentService para o banco de dados, como as in o seguinte exemplo. Esse método pode estar contido na classe ContentService anterior, ou ele pode ser contido separadamente para ser mais modular e que pode ser chamado de contextos diferentes, como as from um instalador de recursos que você pode criar para instalar o serviço, ou de uma linha de comando operação. O método Criar adiciona o objeto ContentService para o banco de dados, sem exigir que você especificar o assembly e classe.
Observação
The custom Provision method that you define is not the Provision method of the base SPPersistedObject class.
Public Sub Provision()
' Add the ContentService administration object to the database.
Dim contentService As ContentService = ContentService.Local
If contentService Is Nothing Then
contentService = New ContentService(SPFarm.Local)
contentService.Update()
End If
End Sub
public void Provision()
{
/* Add the ContentService administration object to the database. */
ContentService contentService = ContentService.Local;
if (contentService == null)
{
contentService = new ContentService(SPFarm.Local);
contentService.Update();
}
}
Arquivo de classe ContentLocationCollection
O seguinte exemplo define a classe ContentLocationCollection, que inclui os construtores e um método Add para adicionar novo de conteúdo locais para a coleção.
Public Class ContentLocationCollection
Public Sub New(parent As SPPersistedObject)
MyBase.New(parent)
End Sub
Public Sub Add(url As String)
Dim location As New ContentLocation(String.Empty, Me.Parent)
location.Url = url
location.Update()
End Sub
End Class
public class ContentLocationCollection : SPPersistedChildCollection<ContentLocation>
{
public ContentLocationCollection(SPPersistedObject parent) : base(parent)
{;}
public void Add(String url)
{
ContentLocation location = new ContentLocation(String.Empty, this.Parent);
location.Url = url;
location.Update();
}
}
Arquivo de classe ContentLocation
O seguinte exemplo define uma enumeração, ContentLocationType, que especifica o tipo de de conteúdo localidade e uma classe, ContentLocation, que define as propriedades de um de conteúdo localidade, incluindo seus exibir nome, tipo, URL e caminho saída. Especificando o Persisted atributo torna um configuração de propriedade persistir no banco de dados.
A classe ContentLocation inclui o seguinte membros:
DisplayName Propriedade ao nome da localidade exibir get.
URL propriedade get ou conjunto de URL de um de conteúdo localidade.
LocationType propriedade get ou definir o tipo localidade.
ContentOutputPath propriedade get ou definir um caminho saída.
Public Enum ContentLocationType
Web
List
End Enum 'ContentLocationType
Public Class ContentLocation
Inherits SPPersistedObject
<Persisted()> _
Private locationType As ContentLocationType
<Persisted()> _
Private contentOutputPath As String
<Persisted()> _
Private url As String
Public Sub New()
End Sub 'New
Public Sub New(name As String, parent As SPPersistedObject)
MyBase.New(name, parent)
End Sub 'New
Public Overrides ReadOnly Property DisplayName() As String
Get
Return Me.url
End Get
End Property
Public Property Url() As String
Get
Return Me.url
End Get
Set
If Me.url = value Then
Return
End If
Me.url = value
' The Name property must be unique among multiple children in a
' collection. Use the URL to ensure uniqueness.
Me.Name = Me.url
End Set
End Property
Public Property LocationType() As ContentLocationType
Get
Return Me.locationType
End Get
Set
Me.locationType = value
End Set
End Property
Public Property ContentOutputPath() As String
Get
Return Me.contentOutputPath
End Get
Set
Me.contentOutputPath = value
End Set
End Property
End Class 'ContentLocation
public enum ContentLocationType
{
Web,
List
}
public class ContentLocation : SPPersistedObject
{
[Persisted]
private ContentLocationType locationType;
[Persisted]
private String contentOutputPath;
[Persisted]
private String url;
public ContentLocation()
{}
public ContentLocation(string name, SPPersistedObject parent)
: base(name, parent)
{;}
public override string DisplayName
{
get
{
return this.url;
}
}
public String Url
{
get { return this.url; }
set
{
if (this.url == value)
{
return;
}
this.url = value;
/* The Name property must be unique among multiple children in a collection. Use the URL to ensure uniqueness. */
this.Name = this.url;
}
}
public ContentLocationType LocationType
{
get { return this.locationType; }
set { this.locationType = value; }
}
public String ContentOutputPath
{
get { return this.contentOutputPath; }
set { this.contentOutputPath = value; }
}
}
Adicionar uma ação personalizada e páginas ASPX
Adicionar páginas .ASPX para a pasta \Admin e definir seu codificar atrás em seu assembly. Para informações sobre administrativo páginas .aspx, consulte Páginas de Administração Central. Usar um recurso para adicionar um ação personalizada para uma página Central Administration. Para obter informações sobre a adição um ação personalizada, consulte Como a: Adicionar Ações para a interface do usuário.
O seguinte arquivo ELEMENTS.xml adiciona um ação personalizada conteúdo exportar para o seção Global Configuration da página operações que vincula a uma página para gerenciar de conteúdo contentman.aspx locais.
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="ContentManagement"
GroupId="GlobalConfiguration"
Location="Microsoft.SharePoint.Administration.Operations"
Sequence="31"
Title="Content export">
<UrlAction Url="/_admin/contentman.aspx" />
</CustomAction>
</Elements>
O arquivo contentman.ASPX para que os pontos ação personalizada podem incluir links para páginas forma para a criação, exibição ou edição de conteúdo itens localidade. Código de página o item nova, de exemplo, pode incluir lógica como o seguinte, que adiciona itens localidade para URLs que são digitados em uma caixa urlImportExport na página e que redireciona para a página contentman.aspx:
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint.WebControls
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace MS.Samples.SharePoint.ContentManager
Public Class NewContentImportExportPage
Inherits Page
Protected urlImportExport As InputFormTextBox
Protected Sub SaveNewImportExport(sender As Object, eventArgs As EventArgs)
Dim service As ContentService = ContentService.Local
service.Locations.Add(Me.urlImportExport.Text)
Response.Redirect("/_admin/contentman.aspx", True)
End Sub 'SaveNewImportExport
End Class 'NewContentImportExportPage
End Namespace 'MS.Samples.SharePoint.ContentManager
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.WebControls;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MS.Samples.SharePoint.ContentManager
{
public class NewContentImportExportPage : Page
{
protected InputFormTextBox urlImportExport;
protected void SaveNewImportExport(object sender, EventArgs eventArgs)
{
ContentService service = ContentService.Local;
service.Locations.Add(this.urlImportExport.Text);
Response.Redirect("/_admin/contentman.aspx", true);
}
}
}
Após você implementar sua personalizado serviço, você pode acessar seus dados por instanciar o serviço e chamado seus membros. Você também pode criar outro personalizado objetos que herdam de outros objetos persistentes no namespace Microsoft.SharePoint.Administration N:Microsoft.SharePoint.Administration. Você pode criar uma classe, de exemplo, que é derivado do SPJobDefinition T:Microsoft.SharePoint.Administration.SPJobDefinition classe para implementar um trabalho timer e tempo limite atingido executar operações pelo seu personalizado serviço. Ou você pode herdam o SPFeatureReceiver T:Microsoft.SharePoint.SPFeatureReceiver classe para definir manipulação de eventos para registrar o serviço quando ele está instalado ou ativado como um recurso.
Por meio de objetos persistentes, você pode adicionar personalizado objetos de administração para o banco de dados configuração para persistir a lógica e dados para um aplicativo da Web que é compilado na plataforma Windows SharePoint Services wssnoversshort.