본문 바로가기

.Net/SharePoint 2013

SharePoint의 환경 변수 Property Bag

안녕하세요. 김승진입니다.


SharePoint 기반의 시스템을 구축하다보면 다양한 경우의 환경 변수를 이용해야 하는 상황들이 발생합니다.

예를 들어 수많은 사이트 모음에서 함께 공유 변수가 필요한 경우나 솔루션을 개발할 때 초기 값 설정이 필요한 경우가 대표적입니다.


이러한 경우 대부분 web.config 파일을 이용합니다.

하지만 web.config의 경우 IIS 재시작이 필요하고 타이머 잡과 샌드백스 솔루션과는 호환이 되질 않습니다.

더구나 SPWebConfigModification 클래스라는 대안이 존재하긴 하지만 서버가 여러대인 경우 배포의 어려움도 존재합니다.


그래서 SharePoint 2010부터 제공되는 기능은 Property Bag이라는 기능입니다.

Property Bag은 운영체계의 시스템 환경 변수와 유사한 기능으로 해당 객체에서 어디서나 호출해서 이용할 수 있습니다. 

1. Farm (SPFarm)

2. Web Application (SPWebApplication)

3. Site Collection (SPSite)

4. Site (SPWeb)

5. List (SPSite)


사이트에 다양한 키값을 지정 할 수 있어서 활용도가 높습니다.

예를 들어 사이트의 분류 정보를 이곳에 담아서 관리하고 확장 할 수 도 있습니다.


아래 샘플코드와 SharePoint Designer, PowerShell에서 이용하는 방법을 설명하고 있습니다.


감사합니다.


1. C# 샘플 코드

using (SPWeb web  = SPContext.Current.Site.RootWeb)
{
    //해당 키 값이 존재하는지 확인
    if(web.Properties["Key"] == null) {
        web.Properties.Add("Key", "Value"); //키 추가
    }         
    web.Properties["Key"] = "NewValue"; //키 수정
    web.Properties["Key"] = null; //키 삭제

    // 키 추가, 수정, 삭제 후 객체 업데이트
    web.Properties.Update(); 

    // 특정 키값 호출
    string storedValue = web.Properties["Key"]; 
}

2. SharePoint Designer에서 확인

(SharePoint Designer > Site탭 > Manage그룹의 Site Options > Parameters 탭)



3. PowerShell 샘플

Clear-Host
$url = http://(사이트 주소)
$web = Get-SPWeb $url

$web.Properties.Add("Key", "Value"); //키 추가
$web.Update()

Write-Host $web.Properties["Key"]; //키 값 출력

$web.Properties["Key"] = "Value";  //키 값 수정
$web.Update()

$web.Properties.Remove("Key") //키 삭제
$web.Update()