如何从控制台应用程序实例化SPWeb对象?

时间:2008-11-14 01:49:11

标签: sharepoint wss

我正在尝试编写一个控制台应用程序,它只列出了sharepoint根目录下的列表数量。

我尝试使用以下代码执行此操作,但对象SPContext.Current为null。有关如何获取Web对象的任何想法吗?

 SPWeb web = SPContext.Current.Site.OpenWeb("http://localhost") ;

3 个答案:

答案 0 :(得分:9)

向Nat的帖子添加一些东西:
即使它不像SharePoint WebApp那样重要,它仍然会重新开始处理所有SPWeb和SPSite对象。
所以要保持良好的习惯:

using (SPSite site = new SPSite(weburl))
{
    using (SPWeb web = site.OpenWeb())
    {
        // bla bla
    }
}

注意:您可以直接将weburl传递给SPSite构造函数,因此OpenWeb将打开给定的Web。

答案 1 :(得分:4)

SPSite spSite = new SPSite("http://myurl");
SPWeb spMySite = spSite.Allwebs["mysite"];
SPWeb spRootsite = spsite.RootWeb;

控制台应用程序将照常在服务器上运行。 此外,使用http://myurl的网址可以是网页的网址,也会创建SPSite对象。例如。 http://myurl/mysite/pages/default.aspx将获得有效的SPSite对象。

答案 2 :(得分:0)

还有其他几种方法可以使用SPSite.OpenWeb()......

如果您跟踪SPWeb对象的GUID:

site.OpenWeb(webUid);

使用网络服务器或网站相对网址或标题,有关详细信息,请参阅MSDN SPSite.OpenWeb(string)

site.OpenWeb(relativeUrl);
site.OpenWeb(title);

使用精确的相对URL并避免SPSite.OpenWeb(字符串)使用的任何聪明的东西:

site.OpenWeb(relativeUrl, true);