我使用Sitefinity(6.1),ASP.Net和4.0框架。
我们已经在IIS上托管了一个sitefinty网站作为网站。 出于许可原因,我们希望添加一个新站点,也使用Sitefinity 网站作为子文件夹。
让我们说网站1是Foo,新网站叫做Bar。
问题是当我获得或使用Bar的相对路径时,我真的从Foo那里得到了路径。
所以atm我正在使用黑客来获取网址。我使用相对路径,然后插入Bar man ually。
e.g。页面被称为家庭。 〜/ home解析为http://www.Foo.com/home。当它应该是http://www.Foo.com/Bar/home时,我只需在手动atm中添加Bar。
在ASP.Net或Sitefinity或MVC中必须有一些方法来说这是我的页面,给我完整的网址。
是否有人为其他网站的网站解析网址?
答案 0 :(得分:1)
从技术上讲,你正在寻找这样的答案: How do I get the full url of the page I am on in C#
但是对于Sitefinity,你必然会遇到麻烦,因为它有许多对网站根目录的“水下”引用。例如,在 Administration>>下的后端查看示例。设置>>高级>>虚拟路径。
因此,您必然会遇到一些交叉污染,并最终导致两个破碎的地点。
虽然我不是为了躲避许可证,但这里有一些建议:
~/
将正确解析的IIS应用程序。最后一个选项将允许您设置site-root(不是iis / asp.net级别,但是sitefinity级别),此时您可以使用page.GetFullUrl();
答案 1 :(得分:0)
如果有人想知道我找到了一个适用于所有环境的简单解决方案。
string url = node.Url.Replace("~/", "./");
其中node是SiteMapNode类型(但是你可以获得你想要的url)。 如果有子文件夹,则会给出正确的路径。
答案 2 :(得分: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“