当我想要访问网络时,我通常必须执行以下代码,这些代码相当自我解释。
using (SPSite site = new SPSite(siteUrl))
{
SPWeb web = null;
if (string.IsNullOrEmpty(webName))
web = site.RootWeb;
else
web = site.AllWebs[webName];
...
web.Close();
}
给出一个直接指向网站的网址:
因此,在这种情况下,siteUrl将是:http://localhost/sites/testsite
和webName将是:testWeb
我想简单地从用户那里得到一些与这两个单独位相对的信息,即直接到网上的网址:http://localhost/sites/testsite/testweb/
我想使用此网址打开网页,而不必手动指定网页名称。我玩过site.OpenWeb并尝试将url传递给它,但它不喜欢这样。它只需要服务器相对URL。 有没有办法只是能够从用户那里获得一个网址,以便打开网络,而不是将网址拆开并假设最后一点可能是也可能不是网络的名称,这取决于我们是否“是否会访问根网站,但这会使代码更糟。”
答案 0 :(得分:35)
您不需要拆分绝对SPWeb URL来访问SPWeb。您可以简单地执行以下操作。
using (SPSite site = new SPSite(<url to spweb>))
{
using(SPWeb web = site.OpenWeb())
{
// put your code here ...
}
}
答案 1 :(得分:1)
您可以将代码设置如下:
using (SPSite site = new SPSite(HttpContext.Current.Request.Url.ToString()))
{
using (SPWeb web = site.OpenWeb())
{
// TODO:.....
}
}
答案 2 :(得分:0)
同意Flo,但需要注意一些特殊细节。
如果使用没有参数的SPSite构造函数,则意味着您将使用默认URL区域创建实例。 共有5个sharepoint url区域,例如:1。默认,2。Intranet,3。Internet,4。Custom,5。Extranet。
区域将传入请求URL与传出URL相关联。可以为每个区域指定任意数量的传入请求URL,但每个区域只能指定一个传出URL。 必须始终存在与默认区域关联的传出URL。
您还可以使用用户令牌创建实例,然后该站点实例将根据用户权限(作为站点中的用户登录名)。 总之,权限将与SPSite不同的构造函数不同,因此您必须小心使用它。
有关详细信息,请访问以下网址:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.spsite.aspx