2013-09-26 42 views
0

我使用Sitefinity(6.1),ASP.Net和4.0框架。獲取一個頁面的完整url,在另一個網站的子文件夾中的網站

我們有一個已經在IIS上作爲網站託管的sitefinty網站。 由於許可原因,我們希望添加一個新的網站,也使用Sitefinity與同一個 網站作爲子文件夾。

可以說網站1是Foo,新網站叫做Bar。

問題是當我得到或使用相對路徑的形式Bar時,我真的從Foo得到路徑。

所以atm我使用黑客來獲得網址的工作。我使用相對路徑,然後手動插入Bar。

例如頁面被稱爲主頁。 〜/ home解析爲http://www.Foo.com/home。當它應該是http://www.Foo.com/Bar/home,所以我只需在手動atm中添加Bar。

ASP.Net或Sitefinity或MVC必須有某種方式來說這是我的頁面,給我完整的網址。

有沒有人有解決其他網站的網站的URL?

回答

1

從技術上講,你正在尋找這樣一個答案: How do I get the full url of the page I am on in C#

但隨着問候Sitefinity你一定會遇到麻煩,因爲它必須在站點根目錄許多「水下」的引用。在管理>>設置>>高級>>虛擬路徑下查看後端實例。

所以你一定會遇到一些交叉污染,並最終有兩個破碎的網站。

雖然我不是爲了躲避牌照,這裏有幾點建議:

  • 他們允許無限的子域。
  • 安裝'bar'作爲一個IIS應用程序,其方式~/將正確解析。
  • 更改管理>>設置>>高級>>系統>> SiteURL設置

這最後一個選項將允許您設置站點根目錄(不是IIS/asp.net的水平,但sitefinity水平),在該點你可以檢索通過Sitefinity API適當的URL與page.GetFullUrl();

+0

SiteURL設置聽起來很有希望,我在本地嘗試了它(我在主機文本字段中放置了一個域),但它似乎沒有任何作用。是否意味着如果我將foo/bar放入主機設置是〜/意味着解析爲foo/bar?你介意舉個例子嗎? – user1909158

+0

這是一種告訴Sitefinity你的網站不是以〜/開頭,而是在〜/ foo開始的方法 〜/ /將永遠解析爲在IIS服務器級別配置的任何文件夾 假設您將IIS配置爲擁有一個網站,並且在根目錄中有一個名爲'sub'的子文件夾,如果在IIS中'sub'只是一個文件夾,.net將解析〜/ to www.domain.com/(主網站文件夾) 如果你將'sub'配置爲iis中的應用程序,那麼〜/ will res olve to www.domain.com/sub/ – jbokkers

0

如果有人想知道我找到了適用於所有環境的簡單解決方案。

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

哪裏節點類型的SiteMapNode的(但你可以得到的網址,但是你想,當然)。 如果存在子文件夾,則會提供正確的路徑。

0

如果頁面不在根級別,則此string url = node.Url.Replace("~/", "./");將不起作用。 例如對於這個網址:「xxxx://www.foo.com/sitename/sitefolder/sitepage」它將返回「xxxx://www.foo.com/sitename/sitefolder/home」,而不是「xxxx: //www.foo。com/sitename/home「

相關問題