티스토리 툴바


페이지에서 게시를 눌렀는데. 에러가 나더라. (Unexpected.. 어쩌구 하는 짜증나는 에러)

그래서 한번 체크해보았다. 

뭐? -_-; 활성화 되어있는데 저거? 

됐잖아!

 

있잖아!!!

 

정신을 차리고 생각을 해보니, 이 문제의 배경은 내가 저 'SharePoint Server 게시' 활성화를 껐다켰다 했다는 것.

그러니까 뭐가 문제냐면. 활성화를 시켰는데도 불구하고, 정확하게 게시했다는 값이 들어가있지 않았다는것이다.

아니 뭐 제품이 이래 -_-;;

저... 활성화 시켰는데요? -_- 왜 이러세요?

 

그래서. 구글에서 이거 True로 시키는 방법이 있나 없나 조회해보고, 다음과 같은 솔루션을 얻었다.

http://sharepoint.stackexchange.com/questions/1662/publishing-spweb-properties-missing-why-how

 

Power Shell 을 켜고

[System.Reflection.Assembly]::LoadWithPartialName("System.Web") | Out-Null 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | Out-Null 
$Site1
= New-Object Microsoft.SharePoint.SPSite("http://니 사이트 이름") 
$Web1
= $Site1.OpenWeb() 
$Web1
.AllProperties["__PublishingFeatureActivated"]="True" 
$Web1
.Update() 
 

그러니까 True로 되더라

 

역시 외국인 아저씨들은 머리가 좋다.

이러니까 게시도 잘 되고, 페이지도 잘 만들어지더라.

 

아 그리고, 돌아다니다가 하나 더 안건데. 이 경우 True인데도 안되면 속성 하나를 더 확인해보라고 한다.

 

이 __PagesListId 값이 없을 수도 있고, 엉뚱한 값이 들어가있을 수가 있다고 한다.

Pages 라이브러리를 정확하게 지정해야 하니, Id값 확인하고 Shell을 이용하고 업데이트를 해주자.

 


 http://support.microsoft.com/kb/2483447 에 보면, 명시적으로 못을 박고 있네요.
 (구성원인 유저가 특정 확장자를 가진 파일을 업로드하려고 하면, 아마 Access Denied 라는 창이 뜰 것이다. swf 파일 못올린다)

 -_-;
 참나. 어쩌라고.


 올릴 수 없는 확장자는 다음과 같습니다.

 < ascx, asmx, aspx, jar, master, swf, xap, xsf, xsn >

 딱 보기에, 뭔가 있어보이는 파일들 같긴 합니다. 
 그럼 뭐... 지워야죠.

 파워쉘을 '관리자 권한'으로 실행시켜서 (어드민으로 로그인되어있다면 필요없겠죠) 다음을 입력합니다.
 
 PS c:\> $sa = Get-SPWebApplication - Identity "(어플리케이션 명)"
 
 PS c:\> $sa.WebFileExtensions
ascx
asmx
aspx
jar
master
swf
xap
xsf
xsn        (이러면 이게 죽 나와요 어떤 것들이 막혀있는지)

PS c:\> $sa.WebFileExtensions.Remove("swf")
True       (실행이 되고)

PS c:\> $sa.Update()                      (업데이트)


이렇게 해주시면 됩니다.

주의 : 제 경우입니다. 여러분의 케이스와 다를수도 있음을 알려드립니다.


프로젝트 중에 이런 메세지가 뜬 적이 있어요.

분명히 SPSite에 제대로 된 Url을 추가했는데, Null로.. Url이 없다는 다소 황당한 메세지였습니다.
이럴때는 일단 분석을 해봐야 할 필요가 있습니다. 분명히 Url이 틀렸다던지. 하는 문제는 아니었거든요.

일단 eventvwr로 봅니다.


일반적으로, Sharepoint 2010 을 설치했을 때, API가 사용하는 계정은 sntd\administrator입니다.
그리고 이 계정의 결정은, 전적으로 Pool의 결정에 따릅니다.

즉, 이 웹 응용프로그램에서 기본적으로 사용하는 Pool인, DefaultAppPool의 계정이 무엇이냐에 따라 달라지는 것이지요.
Url이 없는것이 아니라, 그 SPSite의 데이터를 읽어오기 위한 DB에 접근하지 못했다는 이야기입니다.

그럼 해결방법은 2가지가 되겠지요. DefaultAppPool의 프로세스 ID를 바꿔주던지.
아니면 SQL Server에 이 잡혀있는 프로세스 ID의 계정을 추가해 주던지.

두가지 방법 중 하나를 취해주시면 해결됩니다.

DefaultAppPool 프로세스 ID를 보시면,


지금 이 화면은, 인터넷 정보 관리자(inetmgr)에서 DefaultAppPool의 고급설정창을 켠 결과입니다.

기본적으로, 프로세스 모델 ID를 지정하는 곳이 되겠습니다. 기본 웹 크리덴셜과는 별도로 들어가는 프로세스 아이디죠.
즉, SPSite 등의 Sharepoint API가, 저 계정을 가지고 들어간다고 생각하시면 됩니다.
일반적으로 (도메인계정)\Administrator로.. 설정을 하시고 설치를 하셨을 것입니다.
즉, 이 계정이 SQL Server에 있는 계정인지를 확인해보시면 됩니다.

그러니까, 이 계정을 sntd\Administrator 로 바꾸셔도 해결이 될 것이고,


SQL Management Studio 안에 이 (도메인계정)\gwUser를 추가해도 무방하겠습니다.
당연한 말이겠지만.. SNTD\administrator가 저기 있기 때문에 프로세스 ID에 SNTD\administrator가 되는 것이며,
gwUser와 SNTD\gwUser는 다른 계정입니다.

혹시 이 이외의 케이스가 있다면 답글 부탁드리겠습니다.

수고하세요 ^^