SharePoint의 고스트된 페이지가 렌더링되지 않음

적용 대상
SharePoint Server 2019 SharePoint Server 2016 SharePoint Foundation 2013 SP1 Microsoft SharePoint Foundation 2010 Service Pack 2

증상

다음 업데이트 중 하나를 설치한 후 Microsoft SharePoint의 일부 고스트된 페이지가 렌더링되지 않습니다.

예를 들어, MIM(Microsoft Identity Manager) 포털 페이지와 SharePoint 솔루션을 통해 배포된 일부 사용자 지정 페이지가 렌더링되지 않습니다.

또한, 다음 시나리오 중 한 개 이상이 발생할 수 있습니다.

시나리오 1

차단된 고스트 페이지에는 다음 오류 메시지 중 하나가 표시됩니다.

참고

  • 이 페이지에는 'autoeventwireup' 특성이 허용되지 않습니다.

  • 이 페이지에는 'enablesessionstate' 특성이 허용되지 않습니다.

  • 이 파일에는 코드 블록이 허용되지 않습니다.

  • 이 페이지에서는 이벤트 처리기 'OnSelectedIndexChanged'가 허용되지 않습니다.

    참고 마지막 오류 메시지의 이벤트는 "OnClick"과 같은 다른 이벤트일 수도 있습니다.

시나리오 2

차단된 고스트된 페이지에는 다음 오류 메시지가 표시됩니다.

참고

UnsafeControlException: 이 페이지의 웹 파트 또는 웹 양식 컨트롤을 표시하거나 가져올 수 없습니다. 형식을 찾을 수 없거나 안전한 형식으로 등록되지 않았습니다.

시나리오 3

차단된 고스트된 페이지에는 다음 오류 메시지가 표시됩니다.

참고

이 페이지에서는 '/_layouts/somedirectory/affectedusercontrol.ascx' 참조 파일이 허용되지 않습니다.

원인

고스트 페이지는 파일 시스템에 저장됩니다. 서버 쪽 스크립트 및 안전하지 않은 컨트롤을 금지하여 보안 수준이 향상됩니다. 다음 조건이 충족되면 고스트 페이지가 렌더링되지 않도록 차단될 수 있습니다.

  • 고스트된 페이지에는 인라인 코드 또는 서버측 스크립트가 포함되어 있습니다.
  • 코드 숨김 유형 또는 웹 파트 유형이 안전한 것으로 등록되지 않았습니다.

시나리오 1에 대한 해결 방법

이 문제를 resolve 구성/SharePoint/SafeMode/PageParserPaths 요소 아래의 Web.config 파일에 VirtualPath 특성이 있는 새 PageParserPath 요소를 추가합니다.

예를 들어 다음과 같은 오류 메시지가 나타납니다.

"이 페이지에서는 'autoeventwireup' 속성이 허용되지 않습니다."

이 경우 다음과 같이 PageParserPath 요소를 추가할 수 있습니다.


<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
    <PageParserPaths>
        <PageParserPath VirtualPath="/<relativepath>/page.aspx" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true"/>
    </PageParserPaths>
</SafeMode>

동일한 가상 디렉터리의 모든 페이지를 차단 해제해야 하는 경우 다음과 같이 PageParserPath 요소를 사용할 수 있습니다.


<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
    <PageParserPaths>
        <PageParserPath VirtualPath="/<relativepath>/*" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true" IncludeSubFolders="True"/>
    </PageParserPaths>
</SafeMode>

참고

  • VirtualPath 는 차단된 페이지의 경로입니다.
  • VirtualPath 는 고스트되고 사용자 또는 해당 페이지가 포함된 디렉터리에 의해 고스트될 수 없는 페이지를 참조해야 합니다.
  • VirtualPath는 다른 페이지 또는 unghosted할 수 있는 master 페이지를 참조하지 않는 페이지 또는 해당 페이지 또는 master 페이지가 포함되지 않은 디렉터리를 참조해야 합니다.
  • DirectFileDependencies 는 허용되는 직접 파일 종속성 수를 나타냅니다. "허용되는 직접 파일 종속성 수가 제한을 초과합니다"와 같은 오류 메시지가 표시되면 이 값을 변경합니다.

시나리오 2의 해결 방법

이 문제를 resolve 위해 SafeControls 요소(솔루션)에 설명된 대로 지정된 형식, 네임스페이스 및 어셈블리 강력한 이름에 대한 새 SafeControls 요소를 configuration/SharePoint/SafeControls 요소 아래의 Web.config 파일에 추가합니다. 그런 다음 Safe 특성을 TRUE로 설정합니다.

SafeControls 요소의 특성 값 형식에 관한 자세한 내용은 방법: 컨트롤을 안전 컨트롤로 표시의 12단계 "Package Designer에서 안전한 컨트롤 표시" 섹션에 있는 표를 참조하세요.

시나리오 3의 해결 방법

이 문제를 resolve 구성/SharePoint/SafeControls 요소 아래의 Web.config 파일에 Src 특성을 사용하는 새 SafeControls 요소를 추가합니다.

예를 들어 다음과 같은 오류 메시지가 나타납니다.

이 페이지에서는 '/_layouts/somedirectory/affectedusercontrol.ascx' 참조 파일이 허용되지 읺습니다.

이 경우 다음 예제와 같이 SafeControls 요소를 추가할 수 있습니다.


< SafeControls>
    <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>

< SafeControls><SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /></SafeControls>