Pergunta

Eu tenho um problema estranho para criar meus sites programaticamente. Como muitas pessoas, conheço o método CreatePersonalSite da classe UserProfile. Meu cenário é quando um usuário está clicando em algum botão, ele criará automaticamente seu meu site por código.

O problema é que parece ser impossível. De fato, o CreatePersonalSite parece ser dedicado ao aplicativo de administração, que tem acesso ao banco de dados de conteúdo do MySite como DBOwner. Quando tento fazê-lo com o contexto do usuário atual que está clicando no botão, tenho um acesso negado do SQL Server informando que a conta de serviço que conecta ao conteúdo MySite DB não pode acessar. O que é normal, uma vez que o aplicativo da Web do MySite está sendo executado com outra conta do pool de aplicativos do que o site em que o usuário clica no botão.

Então, minha pergunta é como posso fazer para criar o site pessoal conectado como um usuário normal em um aplicativo da web diferente do que o MySite? Pensei em criar uma solicitação da Web para a coleção do site MySitehost + "/_layouts/mysite.aspx", mas isso muito sujo. Mais eu posso dar o acesso ao DBowner ao conteúdo do site do site para a conta do pool de aplicativos do aplicativo da Web onde o usuário está clicando no botão ... mas é seguro e pode ser feito sem problemas?

Obrigado.

Foi útil?

Solução

Então você quer que seja iniciado pelo usuário, mas não como parte do processo padrão que está no lugar visitando a página /_layouts/mysite.aspx?

Eu provavelmente usaria o botão para rebricá-los para a página de provisionamento que, é claro, incluirá verificações para garantir que o site ainda não exista.Se não, e você realmente quer fazer algo personalizado, você pode usar a opção RunWithelevatedPrivilegePrivileges que irá executá-lo como a conta usada para o pool de aplicativos. http://msdn.microsoft.com/en-/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

Geralmente nos casos em que tive que provisionar sites programaticamente eles estão sendo feitos a granel e por um usuário administrativo.Eu provavelmente usaria o PowerShell neste caso.

Outras dicas

Você pode verificar e confirmar se outros usuários podem navegar para "Sobre mim" página do Mysite criado pelo aplicativo de console programaticamente.

Observe também que nesse cenário, o MySite do usuário que foi criado programaTáTICAMENTE, esse usuário em particular não visitou seu MySite por criação.

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