Qual é a diferença entre SPContext.Atual.Da Web.URL e SPContext.Atual.Site quando usando o objeto SPSite?

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

  •  10-12-2019
  •  | 
  •  

Pergunta

SPSite spsite1=new SPSite(SPContext.Current.Web.URL);

SPSite spsite2=SPContext.Current.Site;

Qual é a diferença e quando é que vamos decidir qual usar?

Eu sinto tanto a nos dar o site de objeto de coleção.

Exemplo: SPWeb spweb=spsite1.RootWeb; vai dizer mesmo que spsite2.RootWeb; Então por que existem 2 formas de se fazer isso?

Foi útil?

Solução

SPSite spsite1=new SPSite(SPContext.Current.Web.Url); vai dar você SPSite objecto.Mas vai ser objetos do conjunto de sites apenas quando SPContext.Current.Web.Url é que de web de raiz.Se o objeto da web é o de um sub-site, em seguida, SPSite o objeto não é um site de objeto de coleção.A segunda instrução SPSite spsite2=new SPSite(SPContext.Current.Site); é errado porque não há nenhuma sobrecarga de SPSite que tem SPSite como parâmetro.

ATUALIZAÇÃO

Se a intenção é obter a rootweb, em seguida, a segunda é uma maneira melhor de fazê-lo como você não são instanciar um novo SPSite objecto.Além disso, no primeiro caso, você vai precisar descartar SPSite objeto de como você está criando uma nova comparado ao segundo em que SPSite é obtido através de SPContext o que não deve ser descartado de forma explícita.

Outras dicas

Ambos site1 e site2 retorna o mesmo conjunto de sites (SPSite) objeto.Chamando RootWeb propriedade em ambos os objetos, podemos obter o mesmo web site de nível superior (SPWeb) objeto.

Instrução1:SPSite spsite1=new SPSite(SPContext.Atual.Da Web.URL);

Processo:Se estamos no subsite e estamos chamando o código acima, primeiro-lo a obter o atual subsite web url e passar para o SPSite construtor para obter o Site atual objeto de Coleção.

Instrução2:SPSite spsite2 = SPContext.Atual.Site;

Processo:Agora estamos no subsite e estamos chamando o código acima, que diretamente retrives os objetos do conjunto de Sites.Não há olhando para web parâmetro url para obter o SiteCollection.

Resultado:

spsite1.RootWeb e spsite2.RootWeb retorna o mesmo site de Nível Superior do objeto SPWeb.

spsite1.OpenWeb() retorna o subsite (SPWeb) objeto se estamos no subsite.spsite2.OpenWeb() retorna o site de nível superior (SPWeb), o objeto ainda estamos no subsite.

Para o spsite1, temos a chamada de método dispose para alienar o objeto SPSite.Mas para o spsite2, o sharepoint irá tomar cuidado no descarte do objeto SPSite.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top