sharepoint Arşiv

SPSecurity.RunWithElevatedPrivileges Kullanımına Rağmen Access Denied Mesajı Almak

SharePoint üzerinde yazılım geliştirme işlemleri yaparken zaman zaman bağlı olan kullanıcının yetki seviyesinin üzerinde bir işlemi kontrollü şekilde daha yüksek bir yetki seviyesinde gerçekleştirmek isteyebilirsiniz. Örneğin arayüz üzerinden bir webpart yardımıyla seçilen kullanıcılara yetki vermek istiyorsunuz. Varsayılan olarak webpartınız o anda bağlı olan kullanıcının yetki seviyesinde çalışacak ve eğer bağlı kullanıcının “Full Control” yetkisi yoksa hata mesajı almasına neden olacaktır.

Bu durumda kodlarınızı aşağıdaki blok içerisine almanız kodlarınızın daha yüksek bir yetki seviyesi ile çalıştırılmasına yardımcı olur ve yaşanan sorunu ortadan kaldırabilirsiniz. Şüphesiz dikkatli kullanılması gereken bir kod bloğu.

Ancak bazen bu blokları kullanmanıza rağmen işlemin gerçekleşmediğini ve arka planda logları incelediğinizde alınan hatanın Access Denied olduğunu gözlemleyebilirsiniz. Bu durumun büyük olasılıkla nedeni bu kod bloğu dışında oluşturulmuş olan bir SPWeb veya SPSite nesnesini kullanıyor olmanızdır. Yani örneğin aşağıdaki gibi kullandığınızda sorun yaşayabilirsiniz.

Bu kullanım yerine SPSite ve SPWeb‘in bir instance’ının da SPSecurity.RunWithElevatedPrivileges içerisinde yaratılması ve bu nesnelerin kullanılması sorununuzu çözecektir. Yani kod bloğunu aşağıdaki gibi yapılandırabilirsiniz.

 

Sharepoint ClientPeoplePicker Validasyon

Hazırlayacağınız sayfa veya webpartlar içerisinde SharePoint People Picker bileşenini kullanmanın yolu oldukça basit. Aşağıdaki gibi bir blok ile people picker’ı ekrana getirebilirsiniz.

People picker içerisinde geçerli bir kullanıcı bulunmaması durumunda kontrolünü yapmak için asp.net customValidator bileşenini kullanmak mümkün. Aşağıdaki gibi bir düzen ayarlayabilirsiniz.

Kontrolünüzü gerçekleştirmek için ise aşağıdaki gibi bir JavaScript işinizi görecektir.

 

SharePoint 2019 Neler Yeni, Neler Artık Yok?

ShareGate tarafından özetlenen SharePoint 2019’da neler yeni, neler artık geliştirilmiyor ve nelerden artık vazgeçmek zorundayız başlıklı blog yazısına buradan ulaşabilirsiniz.

Liste ve Kütüphanelerin Şablon Olarak Kaydedilmesi

Bir veya birkaç liste için şablon olarak kaydetmek ve ardından kaydettiğiniz şablonu yeni bir ortamda kullanmak son derece kısa bir zaman alacaktır. Ancak hedefinizde onlarca liste için şablon yaratmak var ve web’in şablonunu alarak bu işi tek seferde çözmek yeterli gelmiyorsa bu durumda aşağıdaki gibi bir metodu kullanarak liste ve kütüphanelerinizin topluca şablonunu alabilirsiniz.

 

PowerShell Kullanarak Tüm SharePoint Health Analyzer Kurallarını Çalıştırmak

PowerShell’in artık işe yaramadığı bir nokta kalmadı gibi. Pek çoğumuzun yoğun kullanmadığı, gözümüze çarptıkça veya bir süre sonra sürekli kırmızı bir bant görmekten sıkılınca baktığımız bir yer SharePoint Health Analyzer ekranı. Aslında SharePoint 2010’dan bu yana hayatımızda olup özellikle ürünün kendi kendine kontrol edebileceği temel mimari adımları kontrol eden ve olması gerekenler için bizi yönlendiren bir arayüz.

Health Analyzer’ın varsayılan olarak kontrol ettiği yüzlerce temel kural var ve hatta daha fazlasını siz de yazabilir veya yazılmış bir çözüm dosyasını sisteme yükleyerek bu kuralların da kontrol edilmesini sağlayabilirsiniz.

Health Analyzer aslında her bir rule farklı zamanlamalara sahip olacak şekilde SharePoint Timer prosesinde çalışan bir yapı. Dolayısıyla bir job aracılığı ile tetikleniyor ve kurala uygun olan kurallar işletilerek sonucu tehlikeli, uyarı ve bilgi gibi kategorilerde karşımıza çıkıyor. Özellikle yeni kurulum sonrası ortam yapılandırmalarında bazen bu kuralların kendi zamanlamasını beklemeden tetiklenmesini isteyebilirsiniz. Bunun için aşağıdaki gibi bir PowerShell komutu işinizi görecektir.

PowerShell console’u “Run as Administrator” modda çalıştırmayı unutmamak gerekiyor elbette. Neticede yapılan işlem yönetici rolünün yetkili olduğu bir başlık.

Hata: Database is up to date but some sites are not completely upgraded

SharePoint’in eski bir sürümünden yeni bir sürüme yükselttiğiniz uygulamalarda bazen ön yüzde herhangi bir hata ile karşılaşmasanızda Central Administration üzerinde yer alan “Database Upgrade Status” sayfasına gittiğinizde yükseltme yaptığınız uygulamanın veritabanı için “Database is up to date but some sites are not completely upgraded” hatasını gözlemliyor olabilirsiniz. Bu hata aslında upgrade işleminin tam da istediğimiz gibi gitmediği, birşeylerin eksik olduğu anlamını taşır ve müdehale gerektirir.

Bu statüde bir veritabanınız var ise aşağıdaki PowerShell komutu ile öncelikle yükseltmesi başarıyla sağlanamamış veritabanınızın sistemdeki ID’sini öğrenmeniz gerekir.

Ardından aşağıdaki komut ile bu veritabanı için yükseltme işlemini zorlayabilirsiniz.

Bu komut esnasında hata alıyorsanız hata mesajının sizi yönlendirdiği upgrade log dosyasını incelemenizi öneririm. Zira artık hata ilk upgrade sırasında yaşanan anlık bir hatadan ziyade yükseltmeyi engelleyen bir durumunuzun olduğu anlamına geliyor. Buradaki hata olasılıkları çok çeşitli olabilir, log dosyasını iyi okumak lazım. Mesela basit bir hata olarak upgrade ettiğiniz site koleksiyonunda açık olması beklenen bir feature kapalı olabilir. Bu durumda öncelikle bu sorunu gidermeli ve ardından yukarıdaki komutları çalıştırmalısınız.

Yukarıdaki senaryoyu uyguladınız ancak yine de sayfayı kontrol ettiğinizde hata mesajını görmeye devam ediyorsunuz. Bunun nedeni sayfanın güncellenmesi için SharePoint Configuration Wizard‘ı çalıştırmanız gerekliliği. Configuration Wizard başarıyla çalıştıktan sonra artık olması gerektiği gibi “No action required” mesajını görebilirsiniz.

PowerShell Yardımıyla Dosya İndirmek

PowerShell yardımıyla yapamayacağımız işlem yok gibi, mâlum içeriğinde doğrudan kod yazabiliyoruz. Bu noktada işe yarar bir scripti daha paylaşmak istiyorum. Bunu dilerseniz bir fonksiyon haline getirebilir, belli aralıklar ile çalışacak şekilde zamanlayabilir ve sürekli hale getirebilirsiniz.

 

SharePoint 2013, .Net Framework 4.6

SharePoint 2013’ün güncel Windows Server sürümleri üzerinde (üzerinde .Net Framework 4.6 yüklü olarak bulunan veya manuel olarak yüklenmiş olan) kurulumu esnasında hemen hemen hepimizin yaşadığı, çözümü basit bir problem için kendi kişisel siteme de not bırakmak istedim 🙂

SharePoint kurulumu öncesinde mâlum, öncelikle prerequisite installer uygulamasını çalıştırarak ortamın kurulum için gerekli ön işletim sistemi bileşenlerini konfigüre etmesini ve gerekli olan eklentileri sunucuya indirerek kurmasını sağlıyoruz. Prerequisite installer’ın hiç problemsiz tamamlanmasından sonra bile .Net Framework 4.6’nın yüklü bulunduğu sistemlerde SharePoint 2016 için elinizde bulunan kurulum dosyalarını çalıştırdığınızda hata almanız mümkün. Alacağınız hata mesajı aşağıdaki gibi, bu ürünün .Net Framework 4.5 gerektirdiğini belirtiyor olacak. Halbuki, eğer dikkat ettiyseniz zaten prerequisite installer’ın ilk görevlerinden biri .Net Framework 4.5’i yüklemek ve sorunsuz tamamlanmıştı!

 

 

Bu durumun sorun olmaktan çıkması amacıyla Microsoft 1 yıl kadar önce bir KB makalesi paylaşmıştı zaten. https://support.microsoft.com/en-us/help/3087184/sharepoint-2013-or-project-server-2013-setup-error-if-the–net-framewo adresinden ulaşabilirsiniz bu makaleye.

Özetle yapılması gereken;

  • Eğer SharePoint kurulumunu iso gibi paketlenmiş bir yapıdan gerçekleştiriyorsanız öncelikle dosya içeriğini ayrı bir klasöre açın.
  • SharePoint Server için bu adresten srvsetup.dll’i indirin. Makalede SharePoint Foundation ve Project Server için olan versiyonları da var.
  • Zip içerisinden srvsetup.dll’i çıkartın ve SharePoint setup klasörünüz içerisindeki “updates” klasörü içerisine kopyalayın.
  • Şimdi kurulum exe’sini yeniden çalıştırabilirsiniz.

 

Arama Hizmeti Veritabanı İsmi Değiştirmek

SharePoint 2016 arama hizmetini Central Administration web arayüzünü kullanarak oluşturmaya çalışmak sanırım en basit yöntem ancak SharePoint Central Administration her servis uygulamasını yaratmak için farklı form arayüzleri sunuyor bizlere. Bir kısmında veritabanı ismini değiştirebilir servis seviyesinde detaylı konfigürasyonlar yapabiliyorken bir kısmında bunların bir bölümüne izin vermiyor. Arama hizmeti de bunlardan bir tanesi. Eğer Central Administration arayüzünü kullanarak arama hizmetini yapılandırırsanız SharePoint aşağıdaki dört veritabanını ismini size sormaksızın yaratacaktır.

Admin Database:
<Servis Uygulaması Adı>
Analytics Database:
<Servis Uygulaması Adı>_AnalyticsReportingDB
Crawl Database
<Servis Uygulaması Adı>_CrawlDB
Links Database:
<Servis Uygulaması Adı>_LinksDB

Halbuki bir çoğumuz özellikle paylaşımlı veritabanı sunucusu kullandığımız veya sadece benim gibi takıntılı olduğundan bu bölümde veritabanı isimlendirmelerinde bir kuralın takip edilmesini isteyecektir. Hele ki Central Administration aracılığı ile yaratıyorsanız bu isimlerin sonuna bir de GUID şeklinde uzantı gelecektir ki kabul edilemez 🙂

Bu durumu aşmak için aslında bir bölümünü benim de daha önce paylaştığım PowerShell scriptleri var. Bu sayede Search Service Application’ın en detay konfigürasyonlarına kadar script içerisinden müdehale edebiliyorsunuz. Bazen bunlarda her ortamda çalışma garantisi vermiyor tabi.

Bugün öğrendiğim bir yöntemi paylaşmak isterim. Adım adım uyguladığınızda hedefimize ulaşmamızı sağlayan bir yöntem.

SharePoint Migration Tool from Microsoft

Aslında bir miktar zaman geçti aracın duyurulmasının üzerinden ancak ben bu konuda yazmaya ancak vakit bulabiliyorum. Geçtiğimiz aylarda Microsoft tarafından oldukça işimize yarayabilecek bir araç duyuruldu. Öncelikle aracın indirme bağlantısını paylaşayım : http://aka.ms/spmt

Aracı indirdikten sonra yapılması gereken oldukça basit, “install” butonuna tıklamak ve yüklenmesini beklemek. Araç bir clickonce application olarak yükleniyor ve sonraki açılışlarında güncellemeleri kendisi kontrol ediyor. Yeni çıkan bir araç olduğundan bu aralar bir miktar güncelleme gelecektir diye düşünüyorum düzeltmeler anlamında. Açılışta sizi basitçe akışı görüntüleyen bir ekran karşılıyor ve sihirbazı başlatıyorsunuz.