Orchardcms Orchard CMS-指向网络共享文件的菜单链接

Orchardcms Orchard CMS-指向网络共享文件的菜单链接,orchardcms,orchardcms-1.6,Orchardcms,Orchardcms 1.6,我有一个Orchard 1.6网站,托管在Windows Server 2012、IIS 8.5、.NET 4.0上 我需要在我的Orchard菜单中添加一个指向网络托管文件的链接,在这里可以从我的web服务器访问网络共享—目标文件本身位于不同的服务器上。我投入file://path/to/network/file 在自定义链接菜单URL中,但网站的基本URL始终位于链接的前面 例如,如果我的基本URL是http://example.com,链接变为http://example.com/file

我有一个Orchard 1.6网站,托管在Windows Server 2012、IIS 8.5、.NET 4.0上

我需要在我的Orchard菜单中添加一个指向网络托管文件的链接,在这里可以从我的web服务器访问网络共享—目标文件本身位于不同的服务器上。我投入file://path/to/network/file 在自定义链接菜单URL中,但网站的基本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;web服务器和目标网络URL位于同一服务器上

有没有办法强迫Orchard使用给定的URL,而不进行任何更改?或者,构建最终链接的代码在哪里

使用“HTML菜单项”而不是“自定义链接”插入原始HTML作为链接确实有效,但这似乎是一个相当笨拙的解决方法;我必须这样做几十个链接,我不一定是一个改变他们以后

我研究了Orchard设置和IIS设置;两者都没有任何关于重写链接的内容。更改Orchard上的基本URL以匹配预期的目标服务器是行不通的,而且从长远来看是不可接受的。我还尝试过托管一个临时本地文件c:\temp\test.txt,但我甚至无法在新设置中生成正确的文件://destination

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

编辑: 我要澄清的是,这两个网站都在内部网上;我知道与file://链接相关的安全问题,以及让各种浏览器正确加载链接的问题,但我想先让链接生成工作起来

编辑:问题来源 我找到了我自己的站点之间链接处理不一致的原因——我在第一个站点中编写了一小段Javascript,用于删除应用程序遇到的任何文件的基本URL://链接。我忘了它在那里,硬编码只删除某个基本URL,所以当我将该站点移动到另一个主机名时,它就坏了


因此,Orchard中没有不一致之处,只有我自己的错误内存。

Orchard故意将菜单链接限制为mailto、tel、http和https协议,并排除所有其他协议,如文件和ftp请参阅navigationmanager.cs。如果要使用其他协议,则必须使用另一种类型的菜单项,但请记住,文件协议是不安全的,并非所有浏览器都支持,出于安全原因,请参见示例。从IE6 SP1开始,甚至连Internet Explorer都停止在Internet专区支持它:

我猜Orchard自定义链接只用于站点内导航。因此,Orchard附加了网站的基本url。我认为对于外部链接,您必须使用原始HTML链接,或者扩展导航以允许使用Url.absolute。根据我所看到的,我同意,除了file://在一个实例中有效,http://始终有效。我真的很困惑是什么导致前者在一个站点上工作,而不是在另一个站点上工作。在原始问题中澄清:这些是内部网站,所以我不担心安全问题。获取IE、FF、Chrome中的文件://链接已经完成。所以,对于一个普通的MenuItem自定义链接,支持似乎完全没有了?你知道为什么它在一个设置中工作,而在另一个设置中不工作吗?我觉得这个解决方案在可持续性方面不是最好的,但它现在可以工作了-我获取了1.6.1源代码,并修改了NavigationManager以允许file://和http://等。感谢您为我指出正确的代码。它与HTML菜单项一起工作,因为它只会转储您提供给它的标记。