从Layouts目录运行MasterPages

时间:2009-04-24 15:44:32

标签: sharepoint sharepoint-2007 master-pages

为了简化我的SharePoint环境,我希望有一个中央和单一位置,其中存储了所有母版页,因此我希望直接从_layouts目录引用母版页文件。

我将文件添加到“\ LAYOUTS \ MyMasterPages”目录中,然后更新SPWeb对象以使用该路径:

web.MasterUrl = "/_layouts/MyMasterPages/newdefault.master"

但是当我去网站时,我得到了:

  

引用的文件   '/_layouts/MyMasterPages/newdefault.master'   不允许在此页面上。在   System.Web.UI.TemplateParser.ProcessError(字符串   消息)   System.Web.UI.BaseTemplateParser.GetReferencedType(VirtualPath   virtualPath,Boolean allowNoCompile)
  在   System.Web.UI.PageParser.ProcessMainDirectiveAttribute(字符串   deviceName,String name,String value,   IDictionary parseData)at   System.Web.UI.TemplateParser.ProcessMainDirective(IDictionary的   mainDirective)

我假设这可能是由于信任级别的安全策略和CAS配置,但我不完全确定。有没有办法允许这种在整个企业中使用母版页的集中方式,还是我坚持使用/ _catalog /虚拟路径?

3 个答案:

答案 0 :(得分:3)

这对我有用:

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    this.MasterPageFile = "path to masterpage";
}

建议: How to use the site's masterpage from a _layout SharePoint page?

答案 1 :(得分:0)

我的理解(但我不知道为什么)是Master Pages需要位于每个网站集的MasterPage库中。

由于您需要将这些程序包部署到服务器场中的每个SharePoint服务器(前端,应用程序,数据库等),我认为该要求要么与群集相关,要么与数据库和重影相关。

在任何一种情况下,请务必使用自定义功能作为部署母版页的方式,而不管您的服务器场大小。

我理解想要以自己的方式使用SharePoint做事,虽然我通常会考虑这种想法,但过去一年的痛苦让我觉得生活在推荐的SharePoint边界内是最好的方法。去。

答案 2 :(得分:0)

SharePoint网站使用的母版页必须位于母版页库中。据我所知,这是SharePoint的一项硬性要求。

这为您提供了比您想象的更多的好处。这允许您使用SharePoint设计器实时更改母版页,并且只有您可以看到更改。一旦母版页签入并作为主要版本发布,公众就可以看到更改。您还在母版页上有版本历史记录。

我理解你的痛苦,我和你一样处于同样的境地。我学到的是:不要与平台作斗争,只需在其中工作。