2011-04-11 25 views
5

SharePoint'te başlayan ve yavaşça çok özel bir ASP.NET uygulamasına taşınan bir uygulamanın olduğu bir istemci sitesinde bulunuyorum. Veri elemanlarından bazıları hala SharePoint listelerinde barındırılıyor, bunlardan ikisi şu anda "Notes" ve "Görevler" (SharePoint kurulumlarında oldukça basit veri öğeleri, bunlar hakkında özel bir şey). ASP.NET içinden yapabilmem gereken şeylerden biri, bu listeler için otomatik olarak bazı yeni öğeler oluşturmak ve bunları koddan eklemek.Kimliği al? şu anki kullanıcının SharePoint'i yapabilir mi?

Şimdiye kadar oldukça kolaydır. Bu öğeler için düzenleme yapan mevcut web bölümünü buldum, hata ayıklayıcısını ona ekledim, değerlerini nasıl aldığını ve listeye ne eklediğini izledim vb. Ancak, liste öğesine eklenmiş alanlardan biri de ' t açık gibi. mevcut web bölümü arayüzünde, tarla şuna benzer:

Assigned To field

Esasen, geçerli Windows etki alanından bir kullanıcı girmek için bir alan var. Kitap simgesi, kullanıcının bir isim, vb. Araması yapmasına izin veren bir açılır pencere açar. Mevcut testimde, bir geliştirme makinesinde yerel Yönetici olarak çalışıyorum. Bu yüzden pop-up'da "admin" i arıyorum ve alanı "[machine name] \ Administrator" ile beklendiği gibi doldurur. Daha sonra, hata ayıklamada, alandan çekilen ve SharePoint liste öğesine girilen değer, bir adın veya bunun gibi bir şeyin aksine "1" dir.

"1" yerel yönetici hesabı için bir tanımlayıcı olduğunu varsayalım. Sonuçta, mantıklı. Ama sorum şu ki, giriş yapan mevcut kullanıcı için bu tanımlayıcıyı kodda nasıl alabilirim? Geçerli kullanıcının adını almak için bir kod buldum, ancak herhangi bir sayısal sayı değil (bir string olsa bile) ID. Ayrıca, bu yalnızca bir ASP.NET uygulama içeriğinin içinde gerçekleşmezdi. Ayrıca, bu liste öğelerini oluşturacak ve bağlantı kurulduğunda onları sunucuya senkronize edebilecek dizüstü bilgisayarlar için bir WPF istemci uygulaması var. Şu anda, istemci kullanıcısının sunucu tarafından bilinen uygun bir etki alanı hesabıyla oturum açılacağı varsayımı üzerinde çalışıyorum.

Bunun çok kolay olduğunu hayal ediyorum, henüz tam ihtiyacım olan şeylere rastlamadım.

cevap

6

Bunu aradığınız varsayalım: Bu arada

int userId = SPContext.Current.Web.CurrentUser.ID; 

, bu kullanıcıya SharePoint tarafından atanan iç Kimliği. Bu kimliği bir WPF uygulamasından almak için, SharePoint içinde bu Kimliği döndürecek bir WebService dağıtabilirsiniz. Ya da SharePoint veritabanını bile sorgulayabilirsiniz, ancak güvenli olup olmadığından emin değilim :-)

+0

Kesinlikle ASP.NET tarafına ihtiyacım var. (Ben kolay olduğunu düşündüm, sadece SP'den hiçbir şey bilmiyorum.) WPF bir biraz daha karmaşık olsa da, çünkü bazen bağlı bir modelde çalışması gerekiyor. Bu yüzden SP bağlantısı garantisi yoktur. En kötü ihtimalle, istemci makinesinin yerel depolamadaki (zaten SP ile ilgili olmayan) öğeleri sıraya alması ve bunları bir web hizmetine zorladığında, web hizmetinin SP'ye gerçek ekleme yapması olarak kimliği atamasıdır. listeleri. Web hizmetinin SP içeriğine sahip olduğundan emin olmak için istemciyle görüşmem gerekiyor. – David

+0

Ayrıca bu Kimliği bir kez alabilir ve ardından yeni bir veritabanında saklayabilirsiniz. Çok daha kolay ve hızlı olur. – goenning

+0

Ya, sanırım bir noktaya bir çözüm bulmam gerekecek. Sadece bazı temel veri elemanlarını istemci dizüstü bilgisayarındaki bir tabloda saklamayı düşünüyorum ve senkronizasyon web sunucusuna ulaştığı zaman (mevcut işlevler, şu anda tonlarca şeyi eşleştiriyor) sadece bu öğeleri sunucuya yüklemek için bir yöntem ekleyin ve sunucunun ayrıntıları anlamasına izin verin. Şu anda durma noktası, SP içeriğinin senkronizasyon web servisinde mevcut olduğunu düşünmüyorum, bu yüzden bunu mimari bir endişe olarak ele almak zorunda kalacağım. Teşekkürler! – David

İlgili konular