the*_*ube 6 browser asp.net directory asp.net-mvc
所以我正在使用ASP.NET MVC开发Intranet Web应用程序,我需要创建一个指向网络上文件夹的链接.所以,举一个例子,假设我想创建一个指向"C:\"的链接,这个uri存储在.我认为最简单的方法是创建一个常规链接,如下所示:site.DocsPath
<a href="file:///<%= site.DocsPath %>">Documents</a>
Run Code Online (Sandbox Code Playgroud)
这解决了:
<a href="file:///C:\ruby">Documents</a>
Run Code Online (Sandbox Code Playgroud)
但是,当您单击链接时,没有任何反应.这基本上就像点击普通文字一样; 绝对没有任何反应.没有重定向,没有.我在Firefox和IE中都试过这个,这两种情况都发生了同样的行为.
最初我认为它可能是斜线.所以我粘贴file:///C:\ruby到地址栏,看看它是否正确.有效.我在Firefox和IE中都尝试了这个,它在两者中都有用.
所以现在,我在想"嘿,也许我的HTML由于某种原因不合适".所以我创建了一个小的html页面,如下:
<html>
<head><title>Test Page</title></head>
<body>
<a href="file:///C:\ruby">Documents</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并且看哪.....它工作了.我点击链接,它实际上是在链接之后.这适用于Firefox和IE.
所以现在我很困惑.在两种情况下(通过ASP.NET MVC和静态HTML),HTML都完全相同.然而它只适用于静态HTML案例.
现在,我只是拉着稻草.我试着粘贴
<a href="file:///C:\ruby">Documents</a>
Run Code Online (Sandbox Code Playgroud)
直接进入ASP.NET MVC中的ViewPage .不,不行.
然后我尝试将一个随机网站静态粘贴到ViewPage中,如:
<a href="http://www.google.com">Supreme Overlord of the Internet</a>
Run Code Online (Sandbox Code Playgroud)
这很有效.所以,现在我已经确认ASP.NET实际上可以遵循手工生成的链接.
现在,没有什么可做的,我做了一些疯狂的事情.我将链接设置为不存在的位置,例如:
<a href="file:///X:\this\doesnt\exist">I Hate ASP.NET MVC right now</a>
Run Code Online (Sandbox Code Playgroud)
Firefox坚持使用它并不遵循它.然而,IE实际上遵循它并给我一个错误页面.如果site.DocsPath = "X:\this\doesnt\exist"我放了同样的事情:
<a href="file:///<%= site.DocsPath %>">Documents</a>
Run Code Online (Sandbox Code Playgroud)
所以现在,我完全糊涂了.我不知道到底发生了什么事.显然,ASP.NET MVC讨厌我,这令人不安,因为除了爱之外我什么都没有.
如果有人知道发生了什么,我将非常感谢帮助.谢谢!
更新:经过大量测试(以及SO的所有人都提供了许多非常有用的答案和评论),我得出的结论是,创建文件夹的正常链接是行不通的.我最终尝试将我在上面创建的静态html页面放在Web服务器上,结果证明它不起作用.我还创建了一个Ruby on Rails应用程序和一个小型PHP应用程序,并通过它们进行了尝试,它也不适用于它们.所以唯一的另一种可能性是它实际上是一个浏览器.
我想我可能会以某种方式连接到SharePoint服务器,以便管理所有文档.感谢所有评论并就此问题提供各种答案的人.我只能选择一个答案,但每个人的评论和答案确实提供了关于发生了什么的清晰画面.谢谢!
这更像是评论而不是答案,但我无法评论......
这不是一个 asp.net-mvc 问题。这是浏览器的问题。一旦呈现 HTML,无论它是硬编码、.net 还是 cgi 都无关紧要。不要讨厌asp.net...
话虽如此,如果你跨过那里发帖,我认为其他人也无法帮助你。
考虑到您的测试,这绝对听起来像是一个安全问题。这也是完全有道理的。
另外,通过一些谷歌搜索,我发现了这个:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/HTML/Q_20405367.html
至少在 IE 中(请参阅下面 MS 的响应),这是一个特定的安全设置。我想象 FF 和其他公司也会有类似的情况。
您遇到的问题是Internet Explore 6 Service Pack 1中的一个新的安全功能。为了防止互联网恶意代码访问您的本地文件,开发团队开发了新的安全功能并将其包含在IE6 SP1中。请注意,这是正常行为。
实际上,IE6 SP1 包括新的安全代码检查,可以防止“区域提升”。这意味着位于“Internet”区域中的文档将不会被授予对“我的电脑”区域中文档的访问权限(通过 HREF、脚本...等)。只有位于“受信任”或“我的电脑”区域中的文档才能访问“我的电脑”区域中的文档。
因此,如果您希望允许不受信任的文档访问“我的电脑”区域中的文档,您可以在“受信任的站点”中添加源 URL(出于明显的安全原因,必须谨慎执行此操作)。“本地 Intranet”区域也是受信任的。
此外,以下注册表项允许禁用新的安全代码检查,以防止“区域提升”: - 您可以创建此 DWORD 项并将其设置为零以禁用此新功能。此外,您可以随时将其更改为 1 来启用它。
HKCU\Software\Microsoft\Internet Explorer\Main\Disable_Local_Machine_Navigate = 0 REG_DWORD
不建议使用上述注册表项,因为它破坏了“区域提升”安全修复。
詹姆士