Pergunta

Eu tento criar uma instância de SPSite no servidor fazenda em um processo personalizado (MyApp.exe) e eu dar-lhe como parâmetro toda a URI ( http: // mysite: 80 / ). Eu também a certeza de que a conta executando MyApp.exe é Site Collection Administrator.

No entanto, eu não posso fazer uma instância de SPSite o que eu estou tentando fazer. Ele sempre joga uma FileNotFoundException.

Alguém tem uma idéia?

StackTrace:

at Microsoft.SharePoint.SPSite..ctor (SPFarm fazenda, Uri requestUri, Boolean contextSite, SPUserToken userToken)
em Microsoft.SharePoint.SPSite..ctor (String requestUrl) a MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (SharePointItem item) em C: \ Workspaces \ MyCompanyName \ Desenvolvimento \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: linha 555

Outra nota lateral ... Eu tenho uma coleção de aplicativos Web + site que eu possa acessar através do navegador, sem qualquer problema.

Foi útil?

Solução

O FileNotFoundException é acionada pelo SharePoint quando não pode encontrar a coleção site solicitado no banco de dados de configuração do SharePoint. Meu palpite é que você ainda não tiver criado um conjunto de sites na URL http: // mysite: 80 . Eu vejo o seguinte rastreamento de pilha, se eu tentar instanciar um novo objeto SPSite com a URL de uma coleção não-existente no site:

System.IO.FileNotFoundException : The site http://server/sites/bah could not be found in the Web application SPWebApplication 
Name=SharePoint - 80 Parent=SPWebService.
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
at Microsoft.SharePoint.SPSite..ctor(String requestUrl)

Especifique o URL apropriado de seu conjunto de sites ou abra Administração Central e criar um novo conjunto de sites.

Outras dicas

Alterar a plataforma de destino nas propriedades de compilação para x64 resolvido este problema para mim no SharePoint 2010.

Leia este site http://community.bamboosolutions.com/forums/t/ 8179.aspx se você estiver executando o seu sistema operacional bit x64 e estão usando MSTest (32 bits) ele irá falhar, o uso nunit funciona !!!

Se é um aplicativo de console acesso SharePoint 2010 você se certificar de construção do seu projecto Target é x64 eo .NET Framework é 3.5.

Esta questão é mais do problema de permissão do usuário dar a seguinte permissão

Permissão para usuário SharePoint do site --- Ler permissão mínima

SharePoint Server --- Juntar a grupo WSS_ADMIN_WPG

Banco de Dados --- Sharepoint conteúdo DB (site de banco de dados coleção) - permissão db_owner Sharepoint configuração DB (config DB de instalação do SharePoint) - - permissão db_owner

Leia mais em meu blog

http://sharepointinstallation.blogspot.com/ 2010/12 / minimal-permissão necessária-a-execute.html

Também é possível que o modelo de objeto não gosta da URL que você está dando. Se você não fornecê-lo com o URL exato em que você criou o conjunto de sites ou um URL exato listados em seu está configurado em seus mapeamentos de acesso alternativo, que irá lançar uma exceção que pode não necessariamente fazer sentido. No seu caso, você pode tentar http://mysite ou http://machinename.

Stacktrace da exceção seria útil.

Eu acho que você possivelmente pode ter uma idéia do que arquivo que é eo que está acontecendo ao desativar "apenas meu código" em Ferramentas -> Opções -> depuração e olhando para o argumento filename na pilha de chamadas de exceção quando o depurador mostra-lo (se você pode depurá-lo, é claro), ou talvez o nome aparece na mensagem de exceção.

Verifique se o seu web.config e ver se há uma configuração lá com um arquivo ausente.

Procurar em você 12 colméia para o log. Se as configurações de log estão corretas, você poderá obter o arquivo ausente.

EDIT: Verifique também se todos os seus DLL estão no GAC. Verifique se o seu arquivo web.config contém todas as informações: namespace, Classname, NameSpace, versão = version_number, Cultura-your_culture, PublicKeyToken = your_signed_token

Eu descobri recentemente que este problema com o construtor pode ser causado por comportamento starnge do construtor.
Eu estou tomando sobre MOSS 2007. Quando você está passando uma URL do site completo para o construtor, o que parece fazer é realmente considerar apenas a parte local do URL, escolhendo a aplicação web que está 'atualmente seleced' no controle seletor de aplicação web.
Assim, por exemplo, quando você tem " http: // webapp / sites / local" e ter " http: // weabapp: 22345 " atualmente selecionado (a última vez que você selecionou-lo de tal selector) quando você chamar

SPSite site = new SPSite("http://webapp/sites/site")

Ele tenta realmente criar um objeto de site para " http: // webapp: 22345 / sites / site " e falha.

Eu tive o mesmo problema. Eu queria correr aplicativo de console com o meu ID de usuário. Sou proprietário do aplicativo web + Farm administrador. Ainda não foi capaz de executar o aplicativo.

problema foi resolvido por

  1. Alterar a plataforma de destino nas propriedades de compilação para x64

  2. Em configurações do site -> Usuários e Permissões -> Administradores do Conjunto de Sites, havia dois nomes. Removido outro nome e começou a trabalhar.

Você pode manter a compilação do projeto conjunto de destino para "Qualquer CPU". A isso é importante para configurar o processo de acolhimento MSTest para executar em 64bits. Abra o arquivo .testsettings, vá para a guia Hosts e defina "Executar testes em 64 bits ..."

Se após este quando você executar os testes VS diz que não há qualquer, remover e adicionar seu projeto de teste de novo (Eu não sei a melhor solução para este)

Espero que ajude!

Nós tivemos esse mesmo problema, mas eu estou familiarizado com as diferentes causas, aqui está um resumo:

  1. Você poderia ter mis-digitado ou não inserido o endereço errado
  2. A conta de usuário que executa o processo não tem as permissões necessárias, que são:. Permissão de leitura para o site do SharePoint e um dbo do db SharePoint Config, e db conteúdo
  3. O processo deve ser um processo de 64 bits (o padrão é 64 bits "Qualquer CPU") quando a construção em um servidor de 64 bits.
  4. O processo deve ser orientada para o .NET 3.5

Eu estava atormentado por isso há algumas semanas. Em última análise, eu descobri que o arquivo que não pôde ser encontrado foi o SharePoint montagem em si. O tempo de execução estava falhando para carregar o satélite assembly via ligação tardia.

A solução para o meu problema foi registrar as Assembléias 12.0.0.0 SharePoint no GAC. Não soa como se fosse o mesmo que o seu problema, mas apenas FYI.

Nós enfrentou o mesmo problema há alguns dias, e a solução foi a criação do aplicativo, que está tentando criar o objeto de SPSite, para usar a mesma AppPool que a aplicação Web do Sharepoint.

Hope isso ajuda.

O MSTest em questão x64 foi a causa deste problema para mim. Trabalha em um aplicativo de console.

Eu tenho mesmo tipo de problema.

Em meu cenário, eu era capaz de criar a instância de SPSite a partir de um aplicativo de console, mas quando um outro companheiro de equipe tentou fazê-lo, a aplicação jogou a mesma exceção como mencionado acima.

Solução: Eu adicionei o outro companheiro de equipe como administrador na caixa servidor Db conteúdo (isso pode não ser possível para todos), o código funciona bem e nenhum erro

Mesmo problema no SharePoint 2010. No entanto, o problema foi com o nosso serviço web que estava acessando o modelo de objeto do SharePoint. O pool de aplicativo que este serviço deve ser executado em deve ser um administrador de fazenda.

Mudar para NUnit não pode ser uma opção para todos.
No meu caso, o problema era que eu estava em um servidor de 64 bits, tive Qualquer CPU verificada (por isso estava pegando a versão correta), mas as minhas configurações de teste foram definido como "testes de força para executar no processo de 32 bit" (GAH! )

Em MSTest, Ir para Test-> Editar teste Configurações> Traço e teste de impacto.
Escolha Hosts.
Certifique-se de que você está correndo contra a versão correta. Aqui está o que você deve escolher

Aqui está a minha lista de verificação para VS2010 SP1, MSTest.

  • Você precisa SP1 para que você possa direcionar testes para .NET 3.5. Não vai funcionar com .NET 4.0
  • Verifique se o site loads- i lançou o site diretamente do editor VS2010, já que é um hiperlink
  • Verifique as configurações de compilação. Escolher 64 bits se o servidor é de 64 bits.
  • No meu caso eu tinha um servidor de 64 bits, mas a escolha x64 seria um fracasso! Essa foi a minha primeira pista.
  • Verifique se as configurações de teste apoiar os bits corretos.

Eu tive o mesmo problema ao tentar o acesso Sharepoint 2010.

Eu fixo-lo, alterando a estrutura de destino para .NET 3.5.- que é a versão suportada para Sharepoint 2010.

No meu caso foi definitivamente um problema de permissões com a conta que eu estava conectado no Windows com.

Tente este comando no Shell de Gerenciamento do SharePoint executado como Administrador:

Get-SPSite ' http: // yoursite / yourcollection '

Se você receber erros, em seguida, logon para o servidor SharePoint como o usuário pool de aplicativo ou a conta usada para instalar o SharePoint e tente o comando acima novamente.

Se ele funciona, então você sabe que sua conta anterior tem um problema de permissões. Para corrigir o problema, executar este comando na mesma janela do shell e fornecer a conta que você deseja usar no VS:

Add-SPShellAdmin -username domínio \ usuário

Eu tive o mesmo problema, eu fiz abaixo mudanças e começou a trabalhar.

  1. Alterar o destino de plataforma no visual studio para x64
  2. Certifique-se você estiver executando o Visual Studio no modo "Administrador".
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top