2009-04-29 7 views
3

J'ai une page d'application que je crée dans SharePoint pour l'héberger dans le répertoire LAYOUTS. La page hérite de LayoutsPageBase et n'a pas d'autre code pour le moment. Le fichier ASPX est défini pour hériter de cette classe/assembly. Assez simple. Mon problème est que je veux déployer mon assembly dans le répertoire BIN de l'application (pas GAC) et utiliser une politique d'autorisation CAS pour lui permettre d'exécuter dans SharePoint. Cependant, à ce stade, chaque fois que je déploie la page, j'obtiens cette exception:Stratégies LayoutsPageBase et CAS dans SharePoint

La demande a échoué. at System.Reflection.Assembly._GetType (nom de chaîne, Boolean throwOnError, Boolean ignoreCase) à System.Web.UI.TemplateParser.GetType (chaîne typeName, Boolean ignoreCase, Boolean throwOnError) à System.Web.UI.TemplateParser.ProcessInheritsAttribute (String baseTypeName, String codeFileBaseTypeName, String src, assemblage Assemblée) à System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes (IDictionary parseData)

dans tous les autres cas où j'ai eu des erreurs d'autorisations, l'exception a indiqué quelle autorisation spécifique je manquais (par exemple SqlClientPermission ou FileIOPermission).

Je sais que le problème est lié à CAS, car il fonctionne très bien lorsque je déploie sur le GAC.

Mes autorisations actuelles CAS se présentent comme suit:

 
     <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>

Ma pensée actuelle est qu'elle est liée à la classe LayoutsPageBase, comme la page fonctionne très bien avec ma politique de CAS quand je change à hériter d'un système de base .Web.UI.Page.

J'ai utilisé l'outil permcalc disponible auprès de Microsoft sur mon assembly et ajouté les autorisations qu'il a découvertes, mais le problème n'a pas été résolu. Voici donc ma longue question: est-ce que quelqu'un a déjà déployé des pages d'application qui héritent de LayoutsPageBase de SharePoint en utilisant des politiques CAS, et quelles permissions avez-vous besoin de spécifier dans votre politique CAS pour le faire fonctionner?

Répondre

2

Ok, compris cela. La classe LayoutsPageBase de l'espace de noms Microsoft.SharePoint.WebControls est décorée comme suit:

[PermissionSet (SecurityAction.InheritanceDemand, Name = "FullTrust"), PermissionSet (SecurityAction.LinkDemand, Name = "FullTrust")]
public class LayoutsPageBase: UnsecuredLayoutsPageBase

Ainsi, le résultat est que vous devez avoir une confiance totale (soit par le biais du GAC ou un ensemble autorisation membersihp) pour exécuter une page d'application qui hérite de LayoutsPageBase.

0

Avez-vous essayé de déployer l'assembly dans _app_bin au lieu du dossier bin?

Questions connexes