我正在尝试编写一个控制台应用程序,它只列出了sharepoint根目录下的列表数量。
我尝试使用以下代码执行此操作,但对象SPContext.Current为null。有关如何获取Web对象的任何想法吗?
SPWeb web = SPContext.Current.Site.OpenWeb("http://localhost") ;
答案 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);