2012-10-15 3 views
1

다른 SharePoint 질문으로 다시 돌아 왔습니다! 로컬 SharePoint 팜의 기능 목록을 반환하는 응용 프로그램이 있습니다. 그러나 문제는 활성화 여부에 상관없이 온라인으로 반환하는 것으로 보인다는 것입니다. This feature would still be displayed as 'Online'SharePoint 2010의 팜 기능 상태

내가 현재 사용하고 코드는 다음과 같다 :

foreach (SPFeatureDefinition featureDefinition in featureCollection) 
      { 
       if (featureDefinition.Scope.Equals(scopeSelect)) 
       { 
        string featureName = featureDefinition.DisplayName; 

         XElement newItem = new XElement("Item", featureName); 
         XElement itemStatus = new XElement("Item", featureDefinition.Status); 
         infoTree.Add(newItem); 
         infoTree.Add(itemStatus); 
        } 
       } 
      } 

문제가 있다는 것입니다 예를 들어,이 기능은 아직 활성화되지 않은 경우에도 '온라인'으로 내 응용 프로그램에 표시 할 featureDefinition.Status는 지형지 물의 실제 상태에 관계없이 항상 '온라인'을 반환합니다. 이것은 내가 뭔가 잘못하고 있다고 믿게하거나, .Status 속성은 실제로 내가 무엇을 찾고있는 것이 아닙니다.

올바른 위치에 나를 놓을 수있는 또 다른 속성이 있습니까?

모든 안내/제안 사항을 가장 잘 이해할 수 있습니다.

편집 : IIS 재설정은 다른 상태를 반환하는 것과 아무런 영향을주지 않습니다.

답변

2

예, .Status 속성은 Definition의 상태를 나타내지 만 특정 범위에서 기능의 활성화 상태는 표시하지 않습니다. 기능 정의는 템플릿 일뿐입니다. 특정 수준 (팜, 웹 응용 프로그램, 사이트, 웹)에서 기능의 인스턴스를 활성화하므로 사용자는 해당 기능의 상태를 확인할 수 없습니다. 기능의 인스턴스가 특정 범위에 존재하는지 여부를 확인해야합니다.

PowerShell을 통해 기능 상태를 확인하려면 Get-SPFeatureas described here을 사용할 수 있습니다. 보시다시피 Get 코드를 호출하는 모든 코드에서 특정 범위에 대해 무언가를 반환하면 해당 기능이 활성화됩니다. C#에서도 동일한 작업을 수행 할 수 있습니다.

예를 들어 기능이 활성화되었는지 여부를 확인하려는 경우 사이트 유효 범위에서 활성화 된 기능을 찾으면 SPSite.Features을 반복 할 수 있습니다. Powershell 커맨드 릿은 다른 작업을 수행하지 않습니다.

팜 기능을 확인하려는 경우 SPWebService.ContentService.Features에서 컬렉션을 확인하여 활성화 된 팜 기능을 확인할 수 있습니다. another example of a PowerShell script (almost looks like C#) here을 참조하십시오.

+0

확실히 'SPWebService.ContentService.Features'는 내가 찾고 있었고해야 할 일이었습니다. 감사! – wjhguitarman