2011-10-12 6 views
6

Estoy creando un elemento web para poner en Sharepoint My Sites. Necesito obtener el SPUser cuyo My Site está en la parte web. Actualmente simplemente uso¿De quién es mi sitio estoy? (Programado)

Request.QueryString["accountname"] 

pero esto no va a funcionar en mi propia Mi sitio, y no estoy seguro de que funcionará todo el tiempo tampoco.

Respuesta

2

Cuando Request.QueryString["accountname"] está vacío, el usuario debe tener su propio mysite para poder buscar en el usuario SPContext.Current.Web.CurrentUser.

+2

Sí, pero no olvide que la propiedad CurrentUser devuelve el usuario que está conectado actualmente, no el usuario en el que está MySite. Supongo que obtener el nombre de cuenta de la cadena de consulta será su única opción – int32

+0

Como Nacht escribe en su publicación, no hay una cadena de consulta de nombre de cuenta cuando está en su propio sitio, por lo que necesita dar cuenta de ambos casos en el código: cuando está en otra persona MySite usa la cadena de consulta y cuando está en los usuarios de corriente MySite, la cadena de consulta está vacía, entonces busque en SPContext para el usuario que ha iniciado sesión. – Daniel

+0

Usar la solicitud web parece un truco, pero si es mi única opción, es mi única opción. ¡Gracias! – Nacht

2

aquí es otro enfoque utilizando UserProfile (Microsoft.Office.Server.UserProfiles)

var profileLoader = Microsoft.SharePoint.Portal.WebControls.ProfilePropertyLoader.FindLoader(HttpContext.Current.Handler as Page); 
var userProfile = profileLoader.ProfileLoaded; 

var loginName = userProfile["AccountName"]; 

Y entonces acaba de obtener su SPUser de SPContext.Current.Web;

+0

hmm .... interesante ... ¿se garantiza que funcione siempre? parece que solo puede funcionar en la página de inicio de mi sitio – Nacht

+0

Tengo varias páginas en mysite y está funcionando – luccio

+0

bien entonces, genial, gracias – Nacht

1

Otra forma posible de hacerlo es utilizar la propiedad SPSiteOwner. Esto le dará un objeto SPUser que generalmente es preferible. Esta propiedad se correlaciona con la propiedad "Propietario del sitio" que se puede configurar en Central Admin en "Cambiar administrador de colección de sitios". Sin embargo, tenga en cuenta que, dado que esto se puede configurar, no se debe confiar en que sea una fuente absoluta de conocimiento en cuyo sitio se encuentra.

+0

Esto también puede arrojar 403 Prohibido cuando los usuarios tienen acceso a un subweb pero no Sitio personal root, como en Blog. – Luizgrs

Cuestiones relacionadas