2009-04-29 11 views
3

LAYOUTSディレクトリにホストするSharePointに作成するアプリケーションページがあります。ページはLayoutsPageBaseから継承していますが、他のコードは現在ありません。 ASPXファイルは、このクラス/アセンブリから継承するように設定されています。かなり簡単。SharePoint内のLayoutsPageBaseポリシーとCASポリシー

私の問題は、アセンブリをアプリケーションのBINディレクトリ(GACではなく)に配置し、CASのアクセス許可ポリシーを使用してSharePoint内で実行できるようにすることです。しかし、この時点で、ページを展開するたびにこの例外が発生します。

要求が失敗しました。 System.Web.UI.TemplateParser.GetType(String typeName、Boolean ignoreCase、Boolean throwOnError)の System.Web.UI.TemplateParser.ProcessInheritsAttributeの にあるSystem.Reflection.Assembly.GetType(String name、Boolean throwOnError、Boolean ignoreCase)私は権限エラーを得ている他のすべての場合にはSystem.Web.UI.TemplateParser.PostProcessMainDirectiveAttributesで(文字列baseTypeName、文字codeFileBaseTypeName、列src、アセンブリアセンブリ) (IDictionaryをparseData)

、例外があり特定のアクセス許可が不足していることが示されています(例:SqlClientPermissionまたはFileIOPermission)。

私はGACに展開するときに正常に動作するので、この問題はCAS関連であることがわかります。

私の現在の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>

私は基本的なシステムを継承し、それを変更するとページが私のCASポリシーに正常に動作して私の現在の考え方は、それはLayoutsPageBaseクラスに関連するということです.Web.UI.Page。

アセンブリからMicrosoftのpermcalcツールを使用し、検出されたアクセス許可を追加しましたが、問題は解決されませんでした。

私の長年にわたる疑問は、CASポリシーを使用してSharePointのLayoutsPageBaseを継承したアプリケーションページを展開したことがありますか?また、CASポリシーではどのようなアクセス許可を指定する必要がありましたか?

答えて

2

これはわかりました。次のようには、Microsoft.SharePoint.WebControls名前空間のLayoutsPageBaseクラスが飾られている:

【のPermissionSet(SecurityAction.InheritanceDemand、NAME = "FullTrustアクセス")のPermissionSet(SecurityAction.LinkDemand、NAME = "FullTrustアクセス")]
パブリッククラスLayoutsPageBase:UnsecuredLayoutsPageBase

だから、結論としては、あなたがLayoutsPageBaseから継承したアプリケーションのページを実行するために完全な信頼を(どちらかGACまたはアクセス許可セットのmembersihpの方法で)持っている必要があるということです。

0

binフォルダーの代わりに_app_binにアセンブリを展開しようとしましたか?

関連する問題