Get full url of a page, for a website in a subfolder of another website
我使用的是SiteFinity(6.1)、ASP.NET和4.0框架。
我们有一个SiteFinty网站已经作为网站托管在IIS上。出于许可的原因,我们希望添加一个新的站点,也可以将SiteFinity添加到相同的站点网站作为子文件夹。
假设网站1是foo,新网站称为bar。
问题是当我得到或使用相对路径窗体栏时,我真的从foo得到了路径。
所以atm我使用黑客来获取网址。我使用相对路径,然后手动插入条。
例如,页面称为主页。~/home解析为http://www.foo.com/home。当它应该是http://www.foo.com/bar/home时,我只需在手动ATM中添加这个条。
在ASP.NET、SiteFinity或MVC中,一定有某种方法可以说这是我的页面,请给出完整的URL。
有没有人有经验解决其他网站的网址?
从技术上讲,你在寻找这样的答案:如何在C语言中获取我所在页面的完整URL?#
但关于网站有限性,你一定会遇到麻烦,因为它有很多"水下"的网站根的参考。请在后端系统的"管理">>"设置">>"高级">>"虚拟路径"下查看实例。
所以你一定会遇到一些交叉污染,最终导致两个破碎的地方。
虽然我不是为了逃避许可证,但这里有几个建议:
- 它们允许无限的子域。
- 将"bar"安装为IIS应用程序,这样
~/ 将正确解析。 - 更改"管理">>"设置">>"高级">>"系统">>"站点URL设置"。
最后一个选项将允许您设置站点根目录(不是IIS/ASP.NET级别,而是SiteFinity级别),此时您可以使用
如果页面不在根级别,这个
如果有人想知道,我找到了一个在所有环境中都能工作的简单解决方案。
1 | string url = node.Url.Replace("~/","./"); |
其中node的类型为sitemapnode(但您可以根据需要获取URL)。如果有或没有子文件夹,则给出正确的路径。