【问题标题】:Orchard CMS - menu link to network-shared fileOrchard CMS - 网络共享文件的菜单链接
【发布时间】:2014-08-11 20:33:51
【问题描述】:

我在 Windows Server 2012、IIS 8.5、.NET 4.0 上托管了一个 Orchard 1.6 站点。

我需要在我的 Orchard 菜单中添加指向网络托管文件的链接,可以从我的网络服务器访问网络共享 - 目标文件本身位于 不同 服务器。我在自定义链接菜单 URL 中输入了file://path/to/network/file,但站点的基本 URL 总是被添加到链接之前。

例如,如果我的基本 URL 是 http://example.com,则链接变为 http://example.com/file://path/to/network/file,然后 .NET 不喜欢路径中的第二个 : - 最重要的是它是不正确的链接。正斜杠、反斜杠或其他符号的组合都不会阻止前置的基本 URL。

为了增加另一个问题,相同的 URL 方案在稍微不同的设置下也能正常工作:Orchard 1.6、Windows Server 2008、IIS 7.0、.NET 4.0;网络服务器和目标网络 URL 在相同服务器上。

有没有办法强制 Orchard 使用给定的 URL,而根本不改变它?或者,构造最终链接的代码在哪里?

使用“HTML 菜单项”而不是“自定义链接”来插入原始 HTML 作为链接确实有效,但这似乎是一种非常笨拙的解决方法;我必须为几十个链接执行此操作,以后不一定会更改它们。

我查看了 Orchard 设置和 IIS 设置;也没有关于重写链接的任何内容。更改 Orchard 上的基本 URL 以匹配预期的目标服务器不起作用(并且长期不可接受)。我也尝试过托管一个临时本地文件 (c:\temp\test.txt),但我什至无法在新设置中生成正确的 file:// 目标。

升级到最新的 Orchard (1.8.x) 不是一个可行的解决方案(如果这最终成为一个可能的解决方案)。

编辑: 我应该澄清一下,这两个站点都在 Intranet 上;我知道与file:// 链接相关的安全隐患,以及让各种浏览器正确加载它们的问题,但我想先让链接生成工作。

编辑:问题来源 我弄清楚了为什么我自己的站点之间的链接处理不一致 - 我在第一个站点中编写了一小段 Javascript,以去除它遇到的任何 file:// 链接的应用程序的基本 URL。我忘记了它在那里并且硬编码以仅删除某个基本 URL,因此当我将站点移动到不同的主机名时,它坏了。

所以,Orchard 没有不一致,只是我自己的记忆错误。

【问题讨论】:

  • 我猜 Orchard 自定义链接仅用于站点内导航。因此 Orchard 附加了网站的基本 url。我认为对于外部链接,您必须使用原始 HTML 链接,或扩展导航以允许使用 Url.Absolute
  • 根据我所见,我同意,但file:// 在一个实例中有效,而http:// 始终有效。我真的很困惑是什么导致前者在一个站点上工作而不是另一个。

标签: orchardcms orchardcms-1.6


【解决方案1】:

Orchard 故意将菜单链接限制为 mailto、tel、http 和 https 协议,并排除所有其他协议,例如文件和 ftp(请参阅 navigationmanager.cs)。如果您想使用其他协议,则必须使用其他类型的菜单项,但请记住,出于安全原因,文件协议不安全且并非所有浏览器都支持(例如,请参阅http://kb.mozillazine.org/Links_to_local_pages_do_not_work)。从 IE6 SP1 开始,甚至 Internet Explorer 也停止在 Internet 区域支持它:http://msdn.microsoft.com/en-us/library/aa767731(v=vs.85).aspx

【讨论】:

  • 在原始问题中澄清:这些是 Intranet 站点,所以我不担心安全隐患。获取file:// 链接以在 IE、FF、Chrome 中工作已经完成。因此,对于普通的 MenuItem 自定义链接,似乎完全不支持了?知道为什么它在一种设置中起作用而在另一种设置中不起作用吗?
  • 嗯,就可持续性而言,我觉得这个解决方案不是最好的,但它现在有效 - 我抓住了 1.6.1 源并修改 NavigationManager 以允许 file://http:// 等。感谢您指出正确的代码。
  • 它适用于 HTML 菜单项,因为它只会转储您提供给它的标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多