获取对网站、Web 应用程序和其他关键对象的引用

来源:互联网 发布:网站php源码下载 编辑:程序博客网 时间:2024/06/16 20:29

 

若要使用WSS部署,您的代码必须先获取对将要处理的对象(包括网站、网站集和 Web 应用程序)的引用。可以使用两种方法完成此操作:一种用于将代码用于控制台或基于 Windows 的应用程序时;另一种用于将代码用于浏览器宿主应用程序时,如当选择网站作为 Microsoft Visual Studio 项目的类型时。

浏览器宿主应用程序:建立网站上下文

若要通过浏览器宿主应用程序使用 WSS 部署,必须先建立网站上下文或网站集上下文以执行对服务器所做的请求。

必须在代码中获得请求的 HTTP 上下文,建议使用 Microzsoft.SharePoint.SPContext 类及其成员来实现此目的。

 

当前网站集:SPSite oSiteCollection = SPContext.Current.Site;

当前网站:  SPWeb oWebSite = SPContext.Current.Web;

.aspx 文件中包含代码或 .aspx.cs 文件时,可以使用 SPControl 对象的方法,并将 System.Web.UI.Page.Context 属性作为参数

例如:SPWeb oWebSite = SPControl.GetContextWeb(Context);

 

如果 .aspx 页继承自 LayoutsPageBase 而非 System.Web.UI.Page,则可以使用前一个类的 Site Web 属性分别获取对当前网站集或网站的引用。(或者,可以将 Microsoft.SharePoint.WebControls.LayoutsPageBase.Context 属性用作GetContextWeb GetContextSite 方法的参数。)LayoutsPageBase 提供了一些额外的面向 SharePoint 的功能,这些功能主要用于管理用户对不能与 System.Web.UI.Page 一起使用的页面所具有的权限。

例如,若在继承自 LayoutsPageBase .aspx 页中使用以下代码(或隐藏在页面中的代码),则将获取对当前网站的引用。SPWeb oWebSite = this.Web;

 

当前顶级服务器场:

SPFarm myFarm = SPContext.Current.Site.WebApplication.Farm;

当前网站集的首要网站:SPWeb oTopSite = SPContext.Current.Site.RootWeb;

SPContext 类不会限制您获取任何给定类型的当前对象。

例如,可以使用 Microsoft.SharePoint.SPSite.AllWebs 属性来获取对当前网站之外的网站的引用。下面的行使用索引器和 AllWebs 属性返回指定网站的上下文。 

SPWeb oWebSite = SPContext.Current.Site.AllWebs["myOtherSite"];

最后,若要获取对服务器场或当前物理服务器的引用,可以使用静态属性 Microsoft.SharePoint.Administration.SPFarm.Local Microsoft.SharePoint.Administration.SPServer.Local

下面的行是一个示例。

SPFarm oFarm = SPFarm.Local;

您不仅可以在 Web 应用程序和 .aspx 页中使用上面的任何技术,也可以在自定义 Web 服务和 Web 部件中加以使用。

控制台和 Windows 应用程序:使用对象构造函数

SPContext 类在控制台或基于 Windows 的应用程序中没有任何意义。如果要为这些类型的应用程序编写代码且要使用特定的网站集,需使用 SPSite 构造函数来实例化表示该网站集的对象,如下例所示。

using (SPSite oSiteCollection = new SPSite("http://localhost"))

{

      ......

}

在具有对集合的引用后,使用 AllWebs 集合获取对该集合中特定网站的引用。

using (SPWeb oWebSite = mySiteCollection.AllWebs["mySite"])

{

      ......

}

另外,使用 OpenWeb 方法,如下面的行所示。

using (SPWeb oWebSite = mySiteCollection.OpenWeb("mySite"))

{

      ......

}