0

我正在使用 Sitefinity (6.1)、ASP.Net 和 4.0 框架。

我们已经在 IIS 上作为网站托管了一个 sitefinty 网站。出于许可原因,我们希望添加一个新站点,该站点也是使用 Sitefinity 制作的,作为子文件夹添加到同一网站。

假设网站 1 是 Foo,新网站称为 Bar。

问题是当我获取或使用相对路径形式 Bar 时,我真的从 Foo 获取路径。

所以 atm 我正在使用 hack 让 url 工作。我使用相对路径,然后手动插入 Bar。

例如页面被称为主页。~/home 解析为http://www.Foo.com/home。当它应该是http://www.Foo.com/Bar/home,所以我只是在手动 atm 中添加 Bar 。

在 ASP.Net 或 Sitefinity 或 MVC 中必须有某种方式说这是我的页面,给我完整的 url。

有没有人有经验解决另一个网站上的网站的网址?

4

3 回答 3

1

从技术上讲,您正在寻找这样的答案: 如何在 C# 中获取我所在页面的完整 url

但是关于 Sitefinity,您一定会遇到麻烦,因为它有许多对站点根目录的“水下”引用。在后台查看Administration >> Settings >> Advanced >> Virtual Paths下的实例。

因此,您一定会遇到一些交叉污染并最终导致两个损坏的站点。

虽然我不是为了躲避许可证,但这里有一些建议:

  • 他们确实允许无限的子域。
  • 将“bar”安装为 IIS 应用程序,这样~/可以正确解析。
  • 更改管理 >> 设置 >> 高级 >> 系统 >> SiteURL 设置

最后一个选项将允许您设置站点根目录(不是 iis/asp.net 级别,而是 sitefinity 级别),此时您可以通过 Sitefinity API 检索正确的 urlpage.GetFullUrl();

于 2013-09-26T17:44:56.780 回答
0

如果有人想知道,我找到了一个适用于所有环境的简单解决方案。

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

其中 node 是 SiteMapNode 类型(但您当然可以根据需要获取 url)。如果有子文件夹,这将给出正确的路径。

于 2013-09-27T02:59:28.270 回答
0

如果页面不在根级别,这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"

于 2015-09-28T08:47:45.160 回答