중간 신뢰에 대한 반영에 대한 권한 오류를 유발하는 비 공개
-
06-07-2019 - |
문제
나는 지금까지, 나는 아마도 중간 신뢰로 실행되는 웹 사이트와 관련된 문제를 본 적이 없다는 점에서 운이 좋았을 것입니다. 나는 인트라넷 앱 만 개발했거나 완전한 신뢰로 운영되는 호스팅 회사를 사용한 적이 있습니다. 그러나 최근 프로젝트를 사용하여 Medior Trust에서 실행하도록 요청받은 호스트는 앱을 실행하려고합니다. 몇 가지 질문 - 나는 Windows XP에서 발전합니다. IIS는 Medium Trust (Dephoming Debug) 및/또는 web.config 설정으로 구성 될 수 있습니까? 이 주제에 대한 풍부한 정보가 있으며 학습 곡선은 가파르고 있습니다.
둘째, 코드를 많이 피하고 제거한 후이 라인이 권한 오류를 일으킨다 고 생각합니다.
각 FieldInfo에 대해 type.getFields의 FieldInfo로서
누구나 이것이 가능한 후보자임을 명확히 할 수 있습니까? 그 비 공개 깃발? 이것은 사본 및 붙여 넣기 코드 (코딩 공포가 이것의 위험을 강조 함)이므로 실제로 생각한 적이 없습니다. 나는 루프가 공공 및 비공개 필드 모두의 객체의 각 필드를 통과한다고 가정하고, 보호 된 필드는 중간 신뢰에 대한 반영으로 금지되어 있음을 읽었습니다.
건배, 롭.
해결책
죄송합니다. 비공개에 대한 반사는 완전한 신뢰와 동일합니다.
어쨌든 내가 완전한 신뢰를 가지고 있지 않았지만 비공개 반사가 있다면, 나는 그것을 내 자신의 코드 신뢰 수준 (쓰기 가능한 문자열 등)으로 바꿀 수 있습니다.
다른 팁
예, XP의 웹 사이트는 중간 신뢰로 실행되도록 구성 할 수 있습니다.
에서u003Csystem.web> 섹션 다음을 추가합니다.
<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>
그리고 당신은 거기에 있습니다.
당신이 찾을 수있는 것은 대부분의 호스트가 사이트를 약간 높은 "중간"신뢰 설정으로 실행하고 기본값을 넘어서 추가 권한을 부여한다는 것입니다.
살펴 보면 :
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config
적용되는 기본 설정이 표시됩니다.
반사는 중간 신뢰에 제한된 주요 사항 중 하나입니다. getfields 페이지:
요청 된 필드가 비공개이고 발신자가 현재 어셈블리 외부의 비 공개 객체를 반영 할 수있는 반사율이없는 경우이 메소드는 NULL 참조를 반환합니다 (Visual Basic에서는 아무것도 없음).
이것은 Null을 반환 할 가능성이 있으므로 반복을 시작하기 전에 NULL을 점검해야하거나 FieldInfo가 사용하기 전에 NULL/아무것도 아닌지 확인해야 할 것입니다.
나는 아무도 대답하지 않은 것처럼 이것을 닫을 것입니다. 또한 시도하고 다시 코딩하기에는 너무 문제가있는 것으로 판명되었습니다. 이 프로그램은 잘못 작성되지 않았지만 객체 매핑을 위해 반사를 매우 많이 사용하고 솔직히 말하면 전체 신뢰를 지원하는 호스팅 회사를 찾는 것이 더 쉽습니다.