Получить полный URL-адрес страницы для веб-сайта в подпапке другого веб-сайта

Я использую Sitefinity (6.1), ASP.Net и фреймворк 4.0.

У нас есть сайт sitefinty, уже размещенный на IIS в качестве веб-сайта. В целях лицензирования мы хотим добавить новый сайт, также созданный с помощью Sitefinity, на тот же сайт, что и подпапка.

Допустим, веб-сайт 1 - это Foo, а новый веб-сайт называется Bar.

Проблема в том, что когда я получаю или использую форму относительного пути Bar, я действительно получаю путь от Foo.

Итак, я использую хак, чтобы заставить работать URL. Я использую относительный путь, а затем вставляю Бар вручную.

например, страница называется домом. ~ / home разрешается по http://www.foo.com/home. когда это должно быть http://www.foo.com/Bar/home, так что я просто добавляю Бар в атм вручную.

В ASP.Net, Sitefinity или MVC должен быть какой-то способ сказать, что это моя страница, дать мне полный URL.

У кого-нибудь есть опыт разрешения URL для сайтов на другом сайте?

3 ответа

Технически вы ищете ответ, подобный следующему: Как получить полный URL-адрес страницы, на которой я нахожусь в C#

Но что касается Sitefinity, вы наверняка столкнетесь с проблемами, потому что в нем много "подводных" ссылок на корень сайта. Посмотрите, например, на серверную часть в разделе Администрирование >> Настройки >> Дополнительно >> Виртуальные пути.

Таким образом, вы неизбежно столкнетесь с каким-либо перекрестным заражением и в итоге получите два сломанных участка.

Хотя я не за уклонение от лицензий, вот несколько советов:

  • Они позволяют неограниченное количество поддоменов.
  • Установите "бар" как приложение IIS таким образом ~/ будет решать правильно.
  • Изменить Администрирование >> Настройки >> Дополнительно >> Система >> Настройки SiteURL.

Эта последняя опция позволит вам установить корневой сайт (не уровень iis / asp.net, а уровень sitefinity), после чего вы сможете получить правильный URL через Sitefinity API с помощью page.GetFullUrl();

Это string url = node.Url.Replace("~/", "./"); не будет работать, если страница не на корневом уровне. Например, для этого URL: "xxxx://www.foo.com/sitename/sitefolder/sitepage" будет возвращено "xxxx://www.foo.com/sitename/sitefolder/home" вместо "xxxx: / /www.foo.com/sitename/home"

Если кому-то интересно, я нашел простое решение, которое работает во всех средах.

string url = node.Url.Replace("~/", "./");

Где узел имеет тип SiteMapNode (но вы можете, конечно, получить URL-адрес). Это дает правильный путь, если есть подпапка или нет.

Другие вопросы по тегам