Политики LayoutsPageBase и CAS в SharePoint - PullRequest
3 голосов
/ 29 апреля 2009

У меня есть страница приложения, которую я создаю в SharePoint для размещения в каталоге LAYOUTS. Страница наследуется от LayoutsPageBase и не имеет другого кода прямо сейчас. ASPX-файл настроен на наследование от этого класса / сборки. Довольно просто.

Моя проблема заключается в том, что я хочу развернуть свою сборку в каталоге BIN приложения (не в GAC) и использовать политику разрешений CAS, чтобы разрешить ее выполнение в SharePoint. Однако в этот момент, всякий раз, когда я развертываю страницу, я получаю следующее исключение:

Запрос не выполнен. в System.Reflection.Assembly._GetType (имя строки, логическое значение throwOnError, логическое значение ignoreCase) at System.Web.UI.TemplateParser.GetType (String typeName, Boolean ignoreCase, Boolean throwOnError) в System.Web.UI.TemplateParser.ProcessInheritsAttribute (String baseTypeName, String codeFileBaseTypeName, String src, Сборка сборки) в System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes (IDictionary parseData)

Во всех других случаях, когда я получал ошибки разрешений, исключение указывало, какое именно разрешение я пропустил (например, SqlClientPermission или FileIOPermission).

Я знаю, что проблема связана с CAS, так как она прекрасно работает, когда я внедряю в GAC.

Мои текущие разрешения CAS выглядят так:

      <PermissionSet class="NamedPermissionSet" version="1" Name="MyPermissionSet">
        <IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
        <IPermission class="SecurityPermission" version="1" Flags="Execution, SkipVerification, UnmanagedCode, ControlEvidence" />
        <IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" Unrestricted="True" ObjectModel="true" />
        <IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
        <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
        <IPermission class="System.Data.OracleClient.OraclePermission, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
      </PermissionSet>

В настоящее время я думаю, что это связано с классом LayoutsPageBase, поскольку страница прекрасно работает с моей политикой CAS, когда я изменяю ее для наследования от базового System.Web.UI.Page.

Я использовал инструмент permcalc, доступный от Microsoft, в своей сборке и добавил обнаруженные разрешения, но проблема не была решена.

Итак, мой скучный вопрос заключается в следующем: кто-нибудь когда-либо развертывал страницы приложений, которые наследуются от LayoutsPageBase SharePoint с использованием политик CAS, и какие разрешения нужно было указать в своей политике CAS, чтобы заставить ее работать?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2009

Хорошо, понял это. Класс LayoutsPageBase пространства имен Microsoft.SharePoint.WebControls оформлен следующим образом:

[PermissionSet (SecurityAction.InheritanceDemand, Name = "FullTrust"), PermissionSet (SecurityAction.LinkDemand, Name = "FullTrust")]
открытый класс LayoutsPageBase: UnsecuredLayoutsPageBase

Таким образом, в результате вы должны иметь полное доверие (либо с помощью GAC, либо с помощью набора разрешений membersihp) для запуска страницы приложения, которая наследуется от LayoutsPageBase.

0 голосов
/ 30 апреля 2009

Вы пытались развернуть сборку в _app_bin вместо папки bin?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...