2012-09-06 3 views
0

내 문제는 사용 권한과 관련이있는 것 같지만 해결 방법을 모르겠습니다.Featurereceiver sharepoint 2010 xdocument 503

내 기능 중 하나 인 FeatureActivated 이벤트에서 SPWebConfigModification 클래스를 사용하여 웹 구성 항목을 관리하기 위해 만든 클래스를 호출 중입니다. 클래스는 프로젝트의 매핑 된 레이아웃 폴더에 추가 한 xml 파일을 읽습니다.

.wsp를 Sharepoint 서버에 배포하면 모든 기능이 제대로 설치되지만 FeatureActivated 이벤트가 실행되면 xml 파일에 액세스 할 때 503 오류가 발생합니다. PowerShell 스크립트를 사용하여 원격으로 .wsp를 배포하고 PowerShell, iisapp 풀 및 owstimer.exe는 모두 동일한 도메인 관리 사용자를 사용합니다.

FeatureActivated 이벤트 코드가 OWSTIMER.exe의 범위 내에서 실행 중이므로 서비스의 로그온을 서버에 대한 관리 권한이있는 도메인 사용자로 변경하여 서버를 해결할 수 있는지 확인했습니다 문제는 아니지만 내가 503을 얻는 것에 관계없이.

xml 파일의 URL을 추적하고이를 IE에 붙여 넣으면 복사 된 서버에서 문제없이 xml을 다시 가져올 수 있습니다.

필자는 FeatureActivated 이벤트 코드가 서버의 XML 파일에 표시되지 않는 이유를 알아낼 수있는 방법을 알려 줄 수 있습니까?

아래 코드는 FeatureActivated 이벤트에서 호출되어 xml을 읽는 코드입니다.

_contentservice = ContentService; 

WriteTraceMessage("Getting SPFeatureProperties", TraceSeverity.Medium, 5); 

_siteurl = properties.Definition.Properties["SiteUrl"].Value; 
_foldername = properties.Definition.Properties["FolderName"].Value; 
_filename = properties.Definition.Properties["FileName"].Value; 
_sitepath = properties.Definition.Properties["SitePath"].Value; 

WriteTraceMessage("Loading xml from layouts for configuration keys", TraceSeverity.Medium, 6); 

xdoc = new XDocument(); 
XmlUrlResolver resolver = new XmlUrlResolver(); 
XmlReaderSettings settings = new XmlReaderSettings(); 

StringBuilder sb = new StringBuilder(); 
       sb.Append(_siteurl).Append("_layouts").Append("/").Append(_foldername).Append("/").Append(_filename); 

WriteTraceMessage("Path to XML: " + sb.ToString(), TraceSeverity.Medium, 7); 
WriteTraceMessage("Credentials for xml reader: " + CredentialCache.DefaultCredentials.ToString(), TraceSeverity.Medium, 8); 

resolver.Credentials = CredentialCache.DefaultCredentials; //this the issue might be here 
settings.XmlResolver = resolver; 
xdoc = XDocument.Load(XmlReader.Create(sb.ToString(), settings)); 
+0

이 문제와 관련된 프록시가 있습니까? 나는 당신이 그것에 대한 어떤 설정도하지 않았 음을 주목한다. – Truezplaya

+0

Install-SPSolution으로 말한 후 Sharepoint가 솔루션을 롤아웃하는 방식과 관련하여 실제로 문제가 발생했습니다. Sharepoint는 FeatureReceiver 코드를 실행하는 롤아웃을 실행하는 작업으로 OWSTimer.exe를 작업합니다. 그래서 -Force 스위치와 함께 Enable-SPFeature 명령을 추가했습니다. 이로 인해 _layouts 디렉터리에 대한 액세스 권한이있는 WMSPROVHOST.exe 프로세스가있는 기능이 활성화됩니다. 따라서 초기 롤아웃이 부분적으로 작동하고 FeatureReceiver 코드를 제대로 실행하려면 강제 실행 기능을 사용하여 피기 백해야했습니다. 내가 CestLaVie 길을 따라 뭔가를 놓친다면. – Maxmanzero

+0

방금 ​​내가 당신의 질문에 대답하지 않았다는 것을 깨달았습니다. 프록시 서버를 의미 했습니까? 현재 내 구성에는 프록시 서버가 없습니다. – Maxmanzero

답변

0

내가 솔루션을 업데이트 할 때 사용-SPFeature 명령에 -Force 스위치를 추가하는 동안하는 솔루션을 추가 할 때 작동하지 않은 기능을 활성화하기 위해 다른 프로세스를 사용했던 것을 발견 때문에 결국이 문제에 대한 펀트 . 궁극적으로 방금 URI 대신 TextReader를 사용하도록 XDocument.Load()를 변경했습니다. xml 파일은 패키지의 일부이므로 WSP를 배포 할 때 항상 사용할 수 있으므로 xml을로드하는 데 IIS와 웹 요청을 사용할 이유가 없습니다.