【问题标题】:LayoutsPageBase and CAS policies in SharePointSharePoint 中的 LayoutsPageBase 和 CAS 策略
【发布时间】:2010-10-22 15:42:21
【问题描述】:

我在 SharePoint 中创建了一个应用程序页面,以托管在 LAYOUTS 目录中。该页面继承自 LayoutsPageBase,目前没有其他代码。 ASPX 文件设置为从此类/程序集继承。很简单。

我的问题是我想将我的程序集部署到应用程序 BIN 目录(不是 GAC)并使用 CAS 权限策略允许它在 SharePoint 中执行。但是,此时,每当我部署页面时,都会出现此异常:

请求失败。在 System.Reflection.Assembly._GetType(字符串名称,布尔 throwOnError,布尔 ignoreCase) 在 System.Web.UI.TemplateParser.GetType(字符串类型名,布尔忽略大小写,布尔 throwOnError) 在 System.Web.UI.TemplateParser.ProcessInheritsAttribute(字符串 baseTypeName,字符串 codeFileBaseTypeName,字符串 src,程序集程序集) 在 System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)

在我遇到权限错误的所有其他情况下,异常会指示我缺少哪个特定权限(例如 SqlClientPermission 或 FileIOPermission)。

我知道这个问题与 CAS 相关,因为当我部署到 GAC 时它工作正常。

我当前的 CAS 权限如下所示:

我目前的想法是它与 LayoutsPageBase 类有关,因为当我将其更改为从基本 System.Web.UI.Page 继承时,该页面可以正常使用我的 CAS 策略。

我在我的程序集上使用了 Microsoft 提供的 permcalc 工具,并添加了它发现的权限,但问题没有解决。

所以我的冗长问题是这样的:是否有人部署过使用 CAS 策略从 SharePoint 的 LayoutsPageBase 继承的应用程序页面,以及您需要在 CAS 策略中指定哪些权限才能使其正常工作?

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    好的,想通了。 Microsoft.SharePoint.WebControls 命名空间的 LayoutsPageBase 类修饰如下:

    [PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust"), PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
    公共类 LayoutsPageBase : UnsecuredLayoutsPageBase

    所以结果是您必须完全信任(通过 GAC 或权限集成员 ihp)才能运行从 LayoutsPageBase 继承的应用程序页面。

    【讨论】:

      【解决方案2】:

      您是否尝试将程序集部署到 _app_bin 而不是 bin 文件夹?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-31
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        相关资源
        最近更新 更多