Pregunta

Intento crear una instancia de SPSite en el servidor de la granja en un proceso personalizado (MyApp.exe) y le doy como parámetro todo el URI ( http: // mysite: 80 / ). También me aseguré de que la cuenta que ejecuta MyApp.exe sea Site Collection Administrator .

Sin embargo, no puedo hacer una instancia de SPSite sea lo que sea que esté tratando de hacer. Siempre arroja una FileNotFoundException .

¿Alguien tiene una idea?

StackTrace:

  

en   Microsoft.SharePoint.SPSite..ctor (SPFarm   granja, solicitud UriUri, booleana   contextSite, SPUserToken userToken)
  a   Microsoft.SharePoint.SPSite..ctor (String   requestUrl) en   MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (SharePointItem   artículo) en   C: \ Workspaces \ MyCompanyName \ Development \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: line   555

Otra nota al margen ... Tengo una colección de Aplicación Web + Sitio a la que puedo acceder a través del navegador sin ningún problema.

¿Fue útil?

Solución

SharePoint lanza FileNotFoundException cuando no puede encontrar la colección de sitios solicitada en la base de datos de configuración de SharePoint. Supongo que aún no ha creado una colección de sitios en la URL http: // mysite: 80 . Veo el siguiente seguimiento de la pila si intento crear una instancia de un nuevo objeto SPSite con la URL de una colección de sitios no existente:

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 la URL correcta de su colección de sitios o abra Administración central y cree una nueva Colección de sitios.

Otros consejos

Cambiar el objetivo de la plataforma en las propiedades de compilación a x64 me resolvió este problema en SharePoint 2010.

Lea este sitio http://community.bamboosolutions.com/forums/t/ 8179.aspx si está ejecutando su sistema operativo x64 bit y está utilizando MSTest (32 bits), ¡fallará, use nunit works!

Si se trata de una aplicación de consola que accede a SharePoint 2010, asegúrese de que el destino de compilación de su proyecto sea x64 y que .NET Framework sea 3.5.

Este problema es más un problema de permiso de usuario otorgue el siguiente permiso

Permiso de usuario Sitio de SharePoint --- Permiso mínimo de lectura

Sharepoint Server --- Agregar al grupo WSS_ADMIN_WPG

Base de datos --- Sharepoint Content DB (base de datos de colección de sitios) - permiso db_owner                            Sharepoint Config DB (Config DB de instalación de sharepoint) - - permiso db_owner

Leer más en mi blog

http://sharepointinstallation.blogspot.com/ 2010/12 / minimal-permission-required-to-execute.html

También es posible que al modelo de objeto no le guste la URL que le está dando. Si no le proporciona la URL exacta en la que creó la colección de sitios o una URL exacta que figura en su se configura en sus Asignaciones de acceso alternativas, arrojará una excepción que no necesariamente tiene sentido. En su caso, puede probar http: // mysite o http: // machinename .

Stacktrace de la excepción sería útil.

Creo que posiblemente puedas tener una idea de qué archivo es y qué está sucediendo al deshabilitar "solo mi código". en herramientas - > opciones - > depurar y mirar el argumento del nombre de archivo en la pila de llamadas de la excepción cuando el depurador lo muestra (si puede depurarlo, por supuesto), o tal vez el nombre aparece en el mensaje de excepción.

Verifique su web.config y vea si hay una configuración allí con un archivo faltante.

Mira en tu colmena 12 para el registro. Si la configuración de su registro es correcta, le faltará el archivo.

EDITAR: compruebe también si TODAS sus DLL están en el GAC. Compruebe si su archivo web.config contiene toda la información: espacio de nombres, Classname, NameSpace, Version = version_number, Culture-your_culture, PublicKeyToken = your_signed_token

Recientemente descubrí que este problema con el constructor puede ser causado por un comportamiento extraño del constructor.
Estoy tomando sobre MOSS 2007. Cuando pasa una URL completa del sitio al constructor, lo que parece hacer es considerar realmente solo la parte del sitio de la URL, eligiendo la aplicación web que está 'actualmente seleccionada' en el control selector de aplicaciones web.
Así, por ejemplo, cuando tiene " http: // webapp / sites / site " y tener " http: // weabapp: 22345 " seleccionado actualmente (la última vez que lo seleccionó en dicho selector) cuando llama

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

Intenta realmente crear un objeto de sitio para " http: // webapp: 22345 / sites / site " y falla.

Tuve el mismo problema. Quería ejecutar la aplicación de consola con mi ID de usuario. Soy propietario de la aplicación web + administrador de la granja. Aún no se pudo ejecutar la aplicación.

El problema fue resuelto por

  1. Cambiar el objetivo de la plataforma en las propiedades de construcción a x64

  2. En la configuración del sitio - > Usuarios y permisos - > Los administradores de la colección de sitios tenían dos nombres. Se eliminó otro nombre y comenzó a funcionar.

Puede mantener el objetivo de compilación del proyecto establecido en "Cualquier CPU". Lo importante es configurar el proceso de host MSTest para que se ejecute en 64 bits. Abra su archivo .testsettings, vaya a la pestaña Hosts y configure " Ejecutar pruebas en 64 bits ... "

Si después de esto, cuando ejecuta sus pruebas, VS le dice que no hay ninguna, elimine y agregue su proyecto de prueba nuevamente (no sé una mejor solución para esto)

¡Espero que ayude!

Tuvimos este mismo problema, pero estoy familiarizado con las diferentes causas, aquí hay un resumen:

  1. Podría haber escrito mal o ingresado la dirección incorrecta
  2. La cuenta de usuario que ejecuta el proceso no tiene los permisos necesarios, que son: Permiso de lectura para el sitio de SharePoint, y un dbo de la configuración de SharePoint db, y contenido db.
  3. El proceso debe ser un proceso de 64 bits (el valor predeterminado es 64 bits "Cualquier CPU") cuando se construye en un servidor de 64 bits.
  4. El proceso debe estar dirigido a .NET 3.5

Estuve plagado de esto hace unas semanas. Finalmente descubrí que el archivo que no se podía encontrar era el ensamblado de SharePoint. El tiempo de ejecución no pudo cargar el conjunto de satélites a través de enlace tardío.

La solución a mi problema fue registrar los ensamblados de SharePoint 12.0.0.0 en el GAC. No parece que sea el mismo que tu problema, sino solo para tu información.

Hace algunos días enfrentamos el mismo problema, y ??la solución fue configurar la aplicación, que está tratando de crear el objeto de SPSite, para usar el mismo AppPool que la aplicación web de Sharepoint.

Espero que ayude.

El problema MSTest en x64 fue la causa de este problema para mí. Funciona en una aplicación de consola.

Tengo un problema similar.

En mi escenario, pude crear la instancia de SPSite desde una aplicación de consola, pero cuando otro compañero de equipo intentó hacerlo, la aplicación arrojó la misma excepción mencionada anteriormente.

Solución: agregué al otro compañero de equipo como administrador en el cuadro del servidor de Content Db (esto puede no ser posible para todos), el código funciona bien y no hay error

Mismo problema en SharePoint 2010. Sin embargo, el problema era con nuestro servicio web que estaba accediendo al modelo de objetos de SharePoint. El grupo de aplicaciones bajo el cual este servicio debería ejecutarse debería ser un administrador de la granja.

Cambiar a NUnit podría no ser una opción para todos.
En mi caso, el problema era que estaba en un servidor de 64 bits, tenía alguna CPU verificada (por lo que elegía la versión correcta) pero mi configuración de prueba estaba configurada en "Forzar pruebas para ejecutarse en un proceso de 32 bits". (¡GAH!)

En MSTest, vaya a TEst- > Editar configuración de prueba- > Trace and Test Impact.
Elija anfitriones.
Asegúrese de estar ejecutando la versión correcta. Esto es lo que debería elegir

Aquí está mi lista de verificación para VS2010 SP1, MSTest.

  • Necesita SP1 para poder dirigir las pruebas a .NET 3.5. No funcionará con .NET 4.0
  • Asegúrese de que el sitio se carga: inicié el sitio directamente desde el editor VS2010, ya que es un hipervínculo
  • Verifique la configuración de compilación. Para elegir 64 bits si el servidor es de 64 bits.
  • En mi caso, tenía un servidor de 64 bits, ¡pero elegir x64 fallaba! Esa fue mi primera pista.
  • Verifique que la configuración de prueba admita los bits correctos.

Tuve el mismo problema al intentar acceder a Sharepoint 2010.

Lo arreglé cambiando el Marco de destino a .NET 3.5, que es la versión compatible para Sharepoint 2010.

En mi caso, definitivamente fue un problema de permisos con la cuenta con la que inicié sesión en Windows.

Pruebe este comando en SharePoint Management Shell que se ejecuta como administrador:

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

Si obtiene errores, inicie sesión en el servidor de SharePoint como usuario del grupo de aplicaciones o la cuenta utilizada para instalar SharePoint e intente nuevamente con el comando anterior.

Si funciona, entonces sabe que su cuenta anterior tiene un problema de permisos. Para solucionar el problema, ejecute este comando en la misma ventana de shell y proporcione la cuenta que desea usar en VS:

Add-SPShellAdmin -UserName Domain \ User

Tuve el mismo problema, hice los siguientes cambios y comenzó a funcionar.

  1. Cambiar el objetivo de la plataforma en Visual Studio a x64
  2. asegúrese de ejecutar Visual Studio en " Administrador " modo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top