본문 바로가기

SharePoint 2010/Development

Sharepoint 2010 WebApplication Page에서 Prefix, WebApplication Scope Feature 프로그래밍으로 제어 할 수 없다!

어제 오늘 삽질한 결과 결론은 Web Application Page에서는 안된다!! 라는 참혹한 결과를 얻었습니다.

Prefix의 경우 제가 하고자 하는 방식은 다음과 같습니다.

해당 Url에 Prefix가 있는지 검사해서. 없으면 만드는 아주 단순한 방식의 프로그래밍..

 

소스는 아래와 같습니다.

SPWebApplication webApp = SPWebApplication.Lookup(new Uri(strHostUrl));
SPPrefixCollection prefixColl = webApp.Prefixes;
if (prefixColl.Contains(txtSitePrefix.Text.Trim()) == false)
{
    SPPrefix newPrefix = webApp.Prefixes.Add(txtSitePrefix.Text.Trim(), SPPrefixType.ExplicitInclusion);
}

위의 코드 중 Prefixes.Add 시점에 “액세스가 거부되었습니다.”라는 오류가 발생됩니다.

 

그래서 좀 찾아보니. Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()에서 해당 에러를 반환합니다.

아래 이미지에 if문에서 else 구문으로 빠지는데 거기에 throw new SecurityException(SPResource.GetString("AccessDenied", new object[0]));

되어 있네요.. 흠…

 

이게 참 신기한 것이.. Feature로 만들면 잘 되는데.. 어플리케이션 페이지에서는 안됩니다.

 

그리고 또 하나 WebAppcliation.Features의 remove 또한 안됩니다.

 

그래서. 해결방법이 없다 입니다. ㅠ.ㅠ

누가 잘 하시는 분 이것 좀 해결 해 주세요!!

왜 안되는건지!! ㅠ.ㅠ