html - Asp.net 链接到文件 : in IE strange behaviour

标签 html asp.net internet-explorer

我们正在努力将旧的 ASP.Net 应用程序迁移到云端,为此我们做了几件事,还更新了应用程序以使用更新的 .net 框架。

现在我们面临一个奇怪的问题,在应用程序中,一个链接是从数据库中的数据创建的。 HTML:

 <asp:HyperLink ID="linkProjectFolder" CssClass="imageLink" runat="server" ToolTip="Open de folder in de Windows Explorer">
     <asp:Image ID="Image1" runat="server" ImageUrl="~/pages/img/openHS.png" />
 </asp:HyperLink>

背后的代码:

string url = string.Concat(((TextBox)viewINFO.FindControl("txtProjectmapBasePath")).Text, ((TextBox)viewINFO.FindControl("txtProjectmapPath")).Text);
HyperLink hl = (HyperLink)viewINFO.FindControl("linkProjectFolder");
if (hl != null)
{
   hl.NavigateUrl = Uri.EscapeUriString(@"file:///" + url);
}

没什么特别的,这段代码在旧版本和新版本之间没有变化。我知道此代码在 firefox 和 chrome 中不起作用,但旧版本在 IE11 中有效。

现在,对于最终用户而言,IE 中的旧版本可以正常工作,如果您单击该链接,则会打开一个 Windows 资源管理器窗口,指向该文件路径。对于同一个最终用户,从同一个工作站使用同一个浏览器,新版本不起作用。当您点击链接时,什么也没有发生。

现在奇怪的是,在我的开发机器上,我通过将文件夹映射到驱动器号 (susbst N: c:\temp\Ndrive) 来模拟网络驱动器,当我尝试链接时,我看到了与结尾相同的行为用户,没有任何反应。现在,如果我取消映射驱动器,启动应用程序并单击链接,链接将在浏览器中打开,我会收到“无法显示页面”。如果我在那一刻重新映射驱动器,请返回浏览器并重试它工作的链接.....

当然存在差异,.net 框架,IIS vs IISExpress vs IIS on azure,但由于它只是一个简单的 href,我会说它必须是客户端。此外,代码有时有效表明 urlencoding 至少是正确的(它与测试 url 的旧版本完全相同)

在数据库中,链接是指向映射驱动器的路径,因此类似“N:\folder\folder 2\folder & folder\”的内容已正确进行 urlencoded,并且仅在如上所述的一半时间内有效。如果我使用到我的 C 驱动器“C:\Temp”的链接,它永远不会工作,如果我使用“127.0.0.1/C$/Temp/”作为链接,它总是工作,但更改数据库中的所有链接以使用 IP地址并不是我们真正想要的方式。

排除上述所有问题后,我不知道是什么导致了这种行为。谁能指出我正确的方向?

最佳答案

考虑使用嵌套的 asp:Image 标签修改 asp:HyperLink 标签,并使用以下两 (2) 个选项之一:

1) 使用带有 ImageUrl 属性的 asp:HyperLink 标签并删除嵌套的图像标签。看这个Microsoft Hyperlink.ImageUrl Property page获取更多信息。

2) 使用带有 ImageUrl 属性的 asp:ImageButton 标签。请参阅标题为:how to link imagebutton to url visual developer 的 SO 问题获取更多信息。

如果这些选项都不能解决您的问题,那么您可能遇到了文件资源访问问题,而不是 ASP.NET 语法问题。

关于html - Asp.net 链接到文件 : in IE strange behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49299341/

相关文章:

html - CSS 两个双 div,一个固定,一个水平移动

c# - Linq-to-SQL WHERE IN 语句返回的内容超出预期

html - CSS - 文本溢出在 IE10 中不起作用

html - CSS 在 Internet Explorer 中不能正常工作? (绝对定位)

windows - 使用 Powershell 实现 IE 自动化

javascript - 在浏览器中获取 accesskeys 的组合键

javascript - 从文本区域获取行并进行比较

html - 无法将图像叠加在另一个图像上

c# - ELMAH 像 NLog 一样是异步的吗?

asp.net - 无需 cookie 即可跨多个域进行单点登录