spsecurity 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.