Pergunta

Eu recentemente construído um programa que analisa um arquivo remoto a partir de \ some_server \ c $ \ directory \ file.xls e funciona bem na minha máquina local como apenas uma página aspx normal.

Então eu coloquei o programa na parte da web formar no meu servidor e eu VM SharePoint obter este erro: O acesso ao caminho '\ Some_server \ c $ \ directory \ file.xls' é negado.

O arquivo é compartilhado para usuários do domínio \ autenticados por isso não estou certo porque ele seria negado? É possível a minha SharePoint está tentando chamá-lo com uma conta local ou serviço de rede? Como posso obtê-lo para ler? Obrigado.

Foi útil?

Solução

Salamander é certo, o SharePoint não é executado com confiança para fazer isso.

A alteração do nível de confiança para SharePoint nele do web.config de WSS_Medium a completa é a solução rápida, mas há implicações de segurança ..

Outras dicas

Apenas uma nota rápida, você pode estar correndo para o problema clássico NTLM Double-Hop. Você pode autenticar para o front-end, mas porque o front-end não tem sua senha, não pode, em seguida, autenticar em um recurso em outro servidor.

Correndo com privilégios elevados, e definição de permissões com base na identidade pool de aplicativos pode ser uma maneira de mover a sua frente.

Eu acho que você vai precisar RunWithElevatedPrivleges que farão SharePoint usar a conta do pool de aplicativos. Também tenha em mente que você terá que se certificar de que conta de pool de aplicativo tem acesso a esse compartilhamento de rede. Evitar o uso de confiança total.

Pode explicar melhor o que exatamente definir o nível de confiança faz para você?

Gostaria de pensar que, se a sua identidade pool de aplicativos é uma conta de domínio que você pode usar SPSecurity.RunWithElevatedPrivileges para usar as credenciais pool de aplicativo para acessar o arquivo. Ou, use impersonate para passar explicitamente as credenciais de outra conta.

SharePoint geralmente é executado em um pool de aplicativos separado. Por favor, verifique a identidade deste pool de aplicativos.

Eu acho que para ser capaz de caminho de rede de acesso, o código tem de ser executado em confiança total, que eu não acho que SharePoint faz.

Por que não armazenar o arquivo no SharePoint para que você tenha um melhor acesso a ele? Coloque-o em uma biblioteca oculta e acessá-lo usando SPSecurity.RunWithElevatedPrivledges.

Há advertências para RWEP. Qualquer referência a SPSite e SPWeb obtido a partir do SPContext (isto é SPContext.Current.Site) ainda será executado sob as privledges do usuário conectado. Você deve explicitamente criar uma referência dentro do delegado RWEP.

SPSecurity.RunWithElevatedPrivileges (delegado () { usando (SPSite site = new SPSite (SPContext.Current.Site.Url)) { utilizando (SPWeb web = site.OpenWeb ()) { // ... fazer algo com SPWeb } } });

Se você precisar acessar o arquivo do SharePoint fora para atualizá-lo com os processos existentes você pode usar o caminho de compartilhamento de arquivo que está disponível para todos SPDocumentLibrary de mas vai Ações -.> Abrir com o Windows Explorer para obter o caminho de rede

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