获取页面的完整网址,用于另一个网站的子文件夹中的网站
本文关键字:网站 另一个 用于 文件夹 获取 | 更新日期: 2023-09-27 18:32:46
我正在使用Sitefinity(6.1),ASP.Net 和4.0框架。
我们有一个网站已经托管在IIS上作为一个网站。出于许可原因,我们希望添加一个新站点,也是使用 Sitefinity 制作的网站作为子文件夹。
假设网站 1 是 Foo,新网站称为 Bar。
问题是当我从 Bar 获取或使用相对路径时,我真的从 Foo 那里得到了路径。
所以 atm 我正在使用一个黑客来让网址工作。我使用相对路径,然后插入酒吧人。
例如,页面被称为主页。 ~/home 在应该 http://www.Foo.com/Bar/home 时解析为 http://www.Foo.com/home.,所以我只需在手动 atm 中添加 Bar。
ASP.Net 或Sitefinity或MVC中一定有某种方式说这是我的页面,给我完整的网址。
有没有人在解析另一个网站中的网站的网址方面有经验?
从技术上讲,您正在寻找这样的答案:如何在 C# 中获取我所在的页面的完整 url
但是关于Sitefinity,您一定会遇到麻烦,因为它有许多对站点根目录的"水下"引用。例如,在后端的"管理>>设置">>"高级>>虚拟路径"下查看。
因此,您一定会遇到一些交叉污染,并最终导致两个损坏的站点。
虽然我不支持躲避许可证,但这里有一些建议:
- 他们确实允许无限的子域。
- 将"bar"安装为 IIS 应用程序,这样
~/
就可以正确解析。 - 更改"管理">>"设置">>"高级>>系统">>"站点网址"设置。
最后一个选项将允许您设置站点根目录(不是iis/asp.net级别,而是sitefinity级别),此时您可以通过Sitefinity API检索正确的URL
page.GetFullUrl();
如果有人想知道,我找到了适用于所有环境的简单解决方案。
string url = node.Url.Replace("~/", "./");
其中节点的类型是SiteMapNode(但当然,您可以根据需要获取URL)。如果是否有子文件夹,这将提供正确的路径。
如果页面不在根级别,则此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"