어제 오늘 삽질한 결과 결론은 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 또한 안됩니다.
그래서. 해결방법이 없다 입니다. ㅠ.ㅠ
누가 잘 하시는 분 이것 좀 해결 해 주세요!!
왜 안되는건지!! ㅠ.ㅠ
'SharePoint 2010 > Development' 카테고리의 다른 글
Sharepoint 2010 - Detected use of SPRequest for previously closed SPWeb object (0) | 2013.03.07 |
---|---|
Sharepoint 2010 Social Collaboration Colleagues WebPart Row 변경 방법 (0) | 2013.01.16 |
How to : Sharepoint 2010 View Search Results XML Data(검색 xml결과 확인하는 방법) (0) | 2012.10.23 |
Sharepoint Object의 Disposing 방법 (0) | 2012.07.19 |
타이머잡 디버깅 방법(Debug a Timer Job) (0) | 2012.07.19 |