Compartilhar via


Obter referências a sites, aplicativos da Web e outros objetos de chave

Ao trabalho com uma implantação de Windows SharePoint Services, seu codificar deve primeiro get uma referência os objetos ele estará trabalhando com, incluindo Web sites, site conjuntos e aplicativos da Web. Há dois métodos para fazer isso: um se aplica quando seu codificar será usado em um console ou Windows-based application; o outro se aplica quando seu codificar será usado em um aplicativo Browser-Hosted, such as quando você escolher "Web Site" como o tipo de projeto Microsoft Visual Studio.

Observação

A maioria dos codificar exemplo no Windows SharePoint Services SDK usa o segundo método, portanto, se você estiver escrevendo para um console ou Windows-based application, você deverá alteração de codificar.Para obter orientação ao fazer isso, consulte a seção "Console and Windows Applications: Use Object Constructors" neste tópico.

Contexto do site estabelecer aplicativos navegador-host:

Para trabalho com uma implantação de Windows SharePoint Services por significa de um aplicativo Browser-Hosted, seu codificar deve primeiro estabelecer o contexto site ou site coleção contexto para as solicitações feitas para o servidor.

Você deve obter o contexto HTTP da solicitação na codificar. Microsoft recomenda que você faça isso usando a classe Microsoft.SharePoint.SPContext T:Microsoft.SharePoint.SPContext e seus membros. Alguns exemplos são da seguinte maneira.

Para retornar o atual coleção site, você pode usar SPContext.Current.Site SPContext.Current.Site propriedade.

Observação

Todos os exemplos neste artigo exigem um using ( Imports na Visual Basic) para o espaço para nome Microsoft.SharePoint N:Microsoft.SharePoint.

                    Dim oSiteCollection As SPSite = SPContext.Current.Site
                    SPSite oSiteCollection = SPContext.Current.Site;

Para retornar o site do atual solicitação, você pode usar SPContext.Current.Web.

                    Dim oWebSite As SPWeb = SPContext.Current.Web
                    SPWeb oWebSite = SPContext.Current.Web;

Como alternativa, quando seu codificar está contido em um arquivo .aspx ou o "codificar atrás" em uma. arquivo aspx.cs, você pode usar métodos do objeto SPControl T:Microsoft.SharePoint.WebControls.SPControl com o System.Web.UI.Page.Context P:System.Web.UI.Page.Context propriedade como o parâmetro. Para exemplo, use o método GetContextWeb M:Microsoft.SharePoint.WebControls.SPControl.GetContextWeb para get uma referência para o atual site.

                    Dim oWebSite As SPWeb = SPControl.GetContextWeb(Context)
                    SPWeb oWebSite = SPControl.GetContextWeb(Context);

Finally, if your .aspx page inherits from LayoutsPageBase instead of System.Web.UI.Page, you can use the Site or Web properties of the former class to obtain references to the, respectively, the current site collection or Web site. (Or you can use the Microsoft.SharePoint.WebControls.LayoutsPageBase.Context property as the parameter to the GetContextWeb and GetContextSite methods.) LayoutsPageBase gives you some extra SharePoint-oriented functionality, mainly in connection with managing user rights to the page that is not available with System.Web.UI.Page.

De exemplo, a seguinte codificar, quando usado em uma página .aspx que herda de LayoutsPageBase (ou a codificar por trás de página) Obtém uma referência para o atual site.

Observação

Esse exemplo requer um using ( Imports na Visual Basic) para o espaço para nome Microsoft.SharePoint.WebControls N:Microsoft.SharePoint.WebControls.

                    Dim oWebSite As SPWeb = this.Web
                    SPWeb oWebSite = this.Web;

Aviso

Você deve Nãodescartar qualquer SPSite ou objeto SPWeb T:Microsoft.SharePoint.SPWeb obtidas por qualquer um dos métodos acima.A tempo de execução Windows SharePoint Services 3.0 wssversion3short irá descartar deles após a conclusão página.Chamando oDescartar Ou Fecharmétodo desses objetos resultará em um comportamento imprevisível.Isso está em contraste marcado para obter referências a esses tipos de objetos usando um construtor conforme descrito abaixo em "Console and Windows Applications: Use Object Constructors".Há um número de nuances as práticas recomendadas a with regard to ao objetos wssnovershort devem e não devem ser descartados.Estudar cuidadosamente Best Practices: Using Disposable Windows SharePoint Services Objects.

Para retornar o atual de alto nível objeto farm servidor, use SPContext.Current.Site.WebApplication.Farm.

                    Dim oFarm As SPFarm = SPContext.Current.Site.WebApplication.Farm
                    SPFarm myFarm = SPContext.Current.Site.WebApplication.Farm;

Para retornar o site do atual de alto nível coleção site, use o RootWeb P:Microsoft.SharePoint.SPSite.RootWeb propriedade.

                    Dim oTopSite As SPWeb = SPContext.Current.Site.RootWeb
                    SPWeb oTopSite = SPContext.Current.Site.RootWeb;

O SPContext T:Microsoft.SharePoint.SPContext classe não limite você a obter o atual objeto de qualquer tipo fornecido. De exemplo, você pode usar o Microsoft.SharePoint.SPSite.AllWebs propriedade P:Microsoft.SharePoint.SPSite.AllWebs para obter uma referência a um site Other Than o atual um. A seguinte linha retorna o contexto de um site especificado usando um indexador com o AllWebs P:Microsoft.SharePoint.SPSite.AllWebs propriedade.

                    Dim oWebSite As SPWeb = 
    SPContext.Current.Site.AllWebs("myOtherSite")
                    SPWeb oWebSite = SPContext.Current.Site.AllWebs["myOtherSite"];

Aviso

Você Deveexplicitamente descartar de referências a objetos obtidas por meio de AllWebs P:Microsoft.SharePoint.SPSite.AllWebs propriedade.Há um número de nuances as práticas recomendadas a with regard to ao objetos wssnovershort devem e não devem ser descartados.Estudar cuidadosamente Best Practices: Using Disposable Windows SharePoint Services Objects.

Finalmente, para uma referência a tanto o farm servidor ou o atual get físico servidor, você pode usar as propriedades estático Microsoft.SharePoint.Administration.SPFarm.Local e Microsoft.SharePoint.Administration.SPServer.Local. A seguinte linha é um exemplo.

                    Dim oFarm As SPFarm = SPFarm.Local
                    SPFarm oFarm = SPFarm.Local;

Para usar um do Local propriedades, você deve adicionar using ( Imports na Visual Basic) para o espaço para nome Microsoft.SharePoint.Administration N:Microsoft.SharePoint.Administration.

Você pode usar qualquer um da acima técnicas não apenas em aplicativos da Web e páginas .aspx .aspx, mas também em personalizado da Web Serviços e Web Parts.

Importante

Se você instalar "Infra-estrutura atualização para SharePoint Windows Services 3.0 (KB951695)," personalizado soluções podem falhar se eles chamar o modelo de objeto SharePoint enquanto representação está suspenso.Se você usar autenticação Windows e seu codificar chama o modelo de objeto SharePoint de um processo de trabalho IIS, a solicitação deve representar identidade do usuário chamado.Configura os serviços SharePoint Windows ASP.NET para representar o usuário chamado automaticamente, mas seu codificar pode trabalho inesperadamente, ou falhas, se você suspender representação--de exemplo, por chamado o RevertToSelf RevertToSelf função de API o Windows, ou por chamado o método System.Security.Principal.WindowsIdentity.Impersonate System.Security.Principal.WindowsIdentity.Impersonate e passando IntPtr.Zero como o valor de token de usuário parâmetro.Mesmo se sua codificar não reverter explicitamente para si mesmo, pode ser chamado por ASP.NET após ele reverterá para si mesmo, como acontece quando estiver implementando um provedor caminho virtual; Se seu codificar não representar o usuário chamado, ele pode não função corretamente.

Console e aplicativos Windows: Usar construtores de objetos

O SPContext T:Microsoft.SharePoint.SPContext classe não tem sentido em um console ou Windows-based application. Se você estiver escrevendo codificar para um desses tipos de aplicativos e você desejar ao trabalho com uma coleção site específico, use o construtor SPSite Overload:Microsoft.SharePoint.SPSite.#ctor para criar instância um objeto que representa a coleção site, as in o seguinte exemplo.

Observação

Seu codificar deve descartar qualquer SPSite ou objeto SPWeb T:Microsoft.SharePoint.SPWeb obtidos usando um construtor.Há um número de nuances as práticas recomendadas a with regard to ao objetos Windows SharePoint Services wssnoversshort devem e não devem ser descartados.Estudar cuidadosamente Best Practices: Using Disposable Windows SharePoint Services Objects.

                    Dim oSiteCollection As New SPSite("https://localhost")
...
oSitecollection.Dispose();
                    SPSite oSiteCollection = new SPSite("https://localhost");
...
oSitecollection.Dispose();

// Even better, take advantage of a "using" block to ensure
// that the object is disposed.
using (SPSite oSiteCollection = new SPSite("https://localhost"))
{
...
}

Observação

O "localhost" é um Windows alias para o computador no qual está o codificar execução.Para aplicativos console, Microsoft recomenda que você sempre use "localhost" instead of o real nome servidor.Isso ocorre porque um aplicativo console só pode operar em de local computador assim mesmo.Se você rígido codificar um nome servidor, such as "MyServer", em seguida, o aplicativo console não pode ser portado para outro computador e seus aplicativos console serão interromper se nome do servidor nunca for alterada.

Depois de ter uma referência a uma coleção, você pode usar o AllWebs coleção P:Microsoft.SharePoint.SPSite.AllWebs para obter uma referência a um site específico W3 (World Wide Web) na coleção.

                    Dim oWebSite As SPWeb
oWebSite = mySiteCollection.AllWebs("mySite")
...
oWebSite.Dispose();
                    SPWeb oWebSite = mySiteCollection.AllWebs["mySite"];
...
oWebSite.Dispose();

// Even better, take advantage of a "using" block to ensure
// that the object is disposed.
using (SPWeb oWebSite = mySiteCollection.AllWebs["mySite"])
{
...
}

Como alternativa, você pode usar o OpenWeb M:Microsoft.SharePoint.SPSite.OpenWeb método como mostrado na seguinte linha.

                    Dim oWebSite As SPWeb
oWebSite = mySiteCollection.OpenWeb("mySite")
...
oWebSite.Dispose();
                    SPWeb oWebSite = mySiteCollection.OpenWeb("mySite");
...
oWebSite.Dispose();

// Even better, take advantage of a "using" block to ensure
// that the object is disposed.
using (SPWeb oWebSite = mySiteCollection.OpenWeb("mySite"))
{
...
}

Consulte também

Referência

Determinar onde criar um aplicativo personalizado

Conceitos

Como Tarefas Pendentes nos serviços SharePoint Windows
Trabalhando com lista de objetos e coleções

Outros recursos

Best Practices: Using Disposable Windows SharePoint Services Objects
Tarefas do modelo de objeto de exemplo