Как получить полный URL-адрес из SPWEB

У меня есть консольное приложение VB.

Я хочу получить абсолютный 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"?


person JADE    schedule 20.12.2011    source источник


Ответы (3)


Итак, ваша проблема в том, что SPWeb на самом деле не имеет «страницы» как таковой. Default.aspx - это просто одна страница внутри контейнера SPWeb.

Вы можете изменить / прочитать страницу по умолчанию с помощью publishWeb, если у вас включена функция публикации, в противном случае попробуйте следующее:

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

person Not loved    schedule 20.12.2011
comment
Привет, Люк! Спасибо за ответ. Однако сайт, на котором я пытаюсь получить полный URL-адрес, не является PublishingWeb. :( - person JADE; 20.12.2011
comment
тогда взгляните на ссылку, у нее есть другой вариант для этого - person Not loved; 20.12.2011

WelcomePage - это свойство типа SPFolder, поэтому для получения полного URL-адреса необходимо использовать:

subsite.Url + "/" + subsite.RootFolder.WelcomePage;
person justforkix09    schedule 20.12.2011
comment
что значит не имеет значения? null? string.empty? - person Dennis G; 20.12.2011
comment
@moontear это пустая строка - person JADE; 20.12.2011
comment
Это сработало для меня на сайтах групп, а также на сайтах публикации. - person justforkix09; 20.12.2011

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;
person Nitin Rastogi    schedule 20.12.2011
comment
Я знаю - также попробуйте обфускатор dot.net, то же самое, что и ILSpy. - person Dennis G; 20.12.2011
comment
Спасибо за это. Я посмотрю на это. - person Nitin Rastogi; 20.12.2011