2011-12-20 74 views
1

我有一个VB控制台应用程序。如何从SPWEB获取完整的URL

我想获得页面的绝对URL。

这里是我当前的代码:

Using siteCollectSPSite As New SPSite("http://mySite") 
Dim blogPostSpList As SPList 

'Get only the subsite of <locale/blogs> 
Using blogSiteSPWeb As SPWeb = siteCollectSPSite.OpenWeb("/blogs") 

For Each subsite As SPWeb In blogSiteSPWeb.Webs 
    Console.WriteLine("Subsite title: " & subsite.Url) 
    '...... 
Next 

现在,我得到的是:http://mySite/blogs/myblog1

我想要得到的是完整的URL:HTTP:/ /mySite/blogs/myblog1/default.aspx

我怎样才能得到“Default.aspx的”?

回答

0

好,所以你的问题是,SPWeb并没有实际上有一个“页面”。 Default.aspx只是SPWeb容器中的一个页面。

可以修改/读取使用publishingWeb如果你有发布功能启用,否则试试这个默认页面:

http://curia.me/post/2011/05/20/SharePoint-how-change-the-default-page-of-a-SPWeb.aspx

+0

嗨卢克!感谢您的回复。但是,我试图获取完整URL的网站不是PublishingWeb。 :( – JADE 2011-12-20 08:51:07

+0

看看这个链接然后,它有其他选择做这个 – 2011-12-20 09:06:27

1

WelcomePage是SPFolder类型的属性,以便获得完整的URL,你有使用:

subsite.Url + "/" + subsite.RootFolder.WelcomePage; 
+0

我试过了..但是WelcomePage没有价值:( – JADE 2011-12-20 09:19:21

+0

你是什么意思“没有价值”?'null'?'字符串。空吗?? – 2011-12-20 09:37:13

+0

@moontear它是一个空字符串 – JADE 2011-12-20 09:41:41

1

SPFolder.WelcomePage应该已经工作。如果没有,则需要在“文件夹”列表项的属性中设置“vti_welcomepage”。 MS就是这样做的。

if (this.m_strRedirectUrl == null) 
    { 
     string text = (string)this.Properties["vti_welcomepage"]; 
     if (text == null) 
     { 
      text = string.Empty; 
     } 
     this.m_strRedirectUrl = text; 
    } 
    return this.m_strRedirectUrl; 
+0

使用的反射器? – 2011-12-20 14:52:55

+0

ILSPy。反射器不是免费的ILSPy同样好 – 2011-12-20 16:29:00

+0

我知道 - 也检查点.net混淆器,与ILSpy相同。 – 2011-12-20 16:34:54