我在Windows Server 2012,IIS 8.5,.NET 4.0上托管了Orchard 1.6站点。
我需要在我的Orchard菜单中添加一个网络托管文件的链接,可以从我的网络服务器访问网络共享 - 目标文件本身位于 不同 < / em>服务器。我将file://path/to/network/file
放入自定义链接菜单网址,但该网站的基本网址始终位于该链接的前面。
例如,如果我的基本网址是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
),但我甚至无法在新设置中生成正确的file://
目的地。
升级到最新的Orchard(1.8.x)并不是一个可行的解决方案(如果这最终成为可能的解决方案)。
修改
我应该澄清两个站点都在内部网上;我知道与file://
链接相关的安全问题,以及让各种浏览器正确加载它们的问题,但我希望首先使链接生成工作。
编辑:问题来源
我弄清楚为什么链接处理在我自己的网站之间不一致 - 我在第一个网站写了一小块Javascript来剥离它遇到的任何file://
链接的应用程序的基本URL。我忘了它就在那里并且硬编码只删除某个基本URL,所以当我将网站移动到另一个主机名时,它就崩溃了。
所以,Orchard没有不一致,只是我自己的错误记忆。
答案 0 :(得分:0)
Orchard故意将菜单链接限制为mailto,tel,http和https协议,并排除所有其他协议,例如file和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