2010-07-31 3 views
1

Sharepojnt 2010 사이트에서 사용하려는 간단한 HttpModule이 포함 된 사용자 지정 어셈블리를 만들었습니다.내 Sharepoint 사이트에 사용자 지정 DLL을 배포 할 수 없습니다.

내 모듈을 SharePoint 사이트 web.config/system.webServer/modules 섹션에 추가했습니다.

그렇다면 정확한 asp.net 응용 프로그램이 작동하는 방식으로 내 DLL을 직접 bin 폴더에 복사했습니다. AspNetHostingPermission에 대한 예외가 발생했습니다.

동일한 DLL을 _app_bin 폴더에 복사했는데 작동했습니다. 모듈이 초기화되어 실행 중입니다.

[AspNetHostingPermission (SecurityAction.InheritanceDemand, 레벨 = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission (SecurityAction.LinkDemand, 레벨 = AspNetHostingPermissionLevel.Minimal)]

:

난 후 모듈 내 클래스에 대해 두 개의 권한 추가

는 또한 조립

[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)] 
[assembly: AllowPartiallyTrustedCallers] 

을이 두 가지를 추가하고 강력하게 내가 만든 열쇠로 내 어셈블리를 서명했다.

그런 다음 DLL을 bin에 복사했지만 여전히 작동하지 않았습니다. 그것을 _app_bin으로 복사했습니다.

DLL을 bin 폴더에 직접 배포하려면 어떻게해야합니까?

+0

_app_bin 폴더에서 작동합니다. 왜 그냥 그대로 두지 않으시겠습니까? – CodeThug

+0

그냥 실행하면 "신뢰할 수"않을 수 있기 때문에? 왜 그런지 궁금해? –

+0

@Tim Larson : 내가 의미하는 바는 : 단지 실행되고 실제로 안전하지 않을 수 있다는 것이 신뢰가 확인되지 않을 수 있기 때문입니다. 오히려 셰어 포인트가 그것을 확인하고 그 실행을 신뢰하는 방식으로 그것을 개발합니다. –

답변

1

문제는 SharePoint에서 코드 액세스 보안 (CAS)을 사용하여 실제로 교육을 잘받은 관리자가 기능을 추가 할 때 환경을 예기치 않은 위험에 노출시키지 않도록 할 수 있다는 것입니다. 그것.

문제는 CAS가 .Net에 들어 있었음에도 불구하고 처음부터 SharePoint에 사용 된 사람이 거의 없었기 때문에 대부분의 개발자는이를 처리하는 방법을 모르고있었습니다.

_app_bin의 모든 항목이 완전 신뢰로 실행되고있어 dll이 작동하는 이유를 알 수 있습니다.

web.config에 지정된 신뢰 수준에 따라 bin의 모든 항목이 덜 신뢰적으로 실행됩니다 (사실 이것은 _app_bin이 완전 신뢰를 지정하지만 실제로는 모든 out-of-trust 수준).

dll이 신뢰 수준을 변경하지 않고 bin에서 작동하게하려면 신뢰할 수있는 수준에서 올바른 dml이 필요한 권한을 가리키는 정책 파일을 수정해야합니다.

속성을 추가해도 처음에는 실제로 문제가 악화됩니다. 이제는 dll이 권한을 요구하기 때문에 필요한 권한이 없어도됩니다.

WSPBuilder을 사용하여 SharePoint에 배포하기위한 WSP 패키지를 작성하는 경우 (WSP 권한을 사용하는 경우) 속성이 도움이되는 경우 보안 속성을 찾고 manifest.xml에서 해당 항목을 만듭니다 그러면 SharePoint에서 배포시 해당 항목을 정책 파일에 추가합니다.

WSPBuilder에서 속성을 사용하려면 SecurityAction.Demand로 변경해야한다고 생각합니다.

+0

감사합니다. 이것은 CAS의 권리를 얻는 방법에 대한 힌트와 함께 정말 좋은 대답입니다. 나는 몇 년 전 이미 CAS (SharePoint에서 사용자 지정 SQL DB에 액세스해야했으며 SQL 사용 권한을 부여하기 위해 트러스트 파일을 변경해야했습니다)와 함께 작업했습니다. 나는이 문제에 어떻게 접근해야할지 몰랐다. 변경 사항 확인은 매우 좋은 지적입니다. –

관련 문제