首页 > 解决方案 > ASP.NET Webforms - 将 SSL 证书绑定到站点后,文件下载和 SSRS 报告显示功能失败

问题描述

概括

环境:Windows Server 2016、IIS 10、ASP.NET webforms 站点、通配符 SSL/TLS 证书、IIS URL Rewrite 2.1(支持 MS 下载)

目标:a) 确定并解决问题的根本原因,b) [首选] 在用户无需更改浏览器设置的情况下让两个失败的功能正常工作,c) 让两个失败的功能正常工作,期间,无需无处不在的浏览器(Chrome、FF、Edge、IE、Safari、Opera)上的首次处理问题。

问题摘要:站点的两个功能,即下载文件和显示 SSRS 报告因首次处理错误而失败或完全失败,具体取决于浏览器,SSL 证书绑定到站点。在大多数情况下,在同一浏览器窗口中执行这些功能的后续尝试都会成功。各种浏览器以不同的方式出现故障,有些浏览器根本不会出现故障,具体取决于所讨论的浏览器。请耐心等待我尝试在下面提供详细信息。

注意:如果没有 SSL 证书,这两个功能都可以正常工作。

我已经在互联网上搜寻了一个无济于事的解决方案,并且非常感谢您对此提供的任何帮助。

细节

我有一个带有 ASP.NET Webforms 站点的客户端,该站点包含文件下载和 SSRS 报告显示功能。用户必须登录才能访问这些功能。可悲的是,最初的开发人员实施了一种基本的、本土化的用户身份验证方法,即它不是一个“正式的”身份验证框架,而只是将提供的用户名/密码对与存储在数据库中的值进行简单比较......没有正式的身份验证据我所知,令牌已设置...这可能是问题的一部分吗?

多年来,使用所有当前的主流浏览器,上述两个功能都可以完美运行。我的客户最近购买了我在生产 IIS 实例上安装的通配符 SSL/TLS 证书并配置了适当的站点绑定。万一这很重要,该站点还在 web.config 中使用带有基本规则的 URL 重写来将所有 HTTP 协议请求修改为 HTTPS 协议。

除了文件下载和 SSRS 报告显示外,网站的所有方面都可以在 SSL 证书到位的情况下正常工作。当前版本的 Chrome 和 Firefox [Windows] 以及 Mac 浏览器(我没有第一手的 Mac 环境访问权限)正在表现出错误行为。IE 11 (go figure) 似乎是唯一没有任何问题的浏览器。我没有测试 Edge,因为我无法访问那个浏览器版本。

文件下载

该站点具有允许登录用户从该站点下载文件的功能。

铬合金

Chrome 在浏览器底部的下载状态栏中显示首次处理错误“失败 - 网络错误”。单击错误消息中的 V 形并从上下文菜单中选择“恢复”选项会完成下载,但是,任何从其实际文件夹位置打开(双击)zip 存档的尝试都会导致以下错误消息:“Windows 无法打开文件夹。压缩(压缩)文件夹“{path}”无效。” 在十六进制编辑器中分析 zip 文件显示它包含网页源代码,而不是预期的文件下载。在同一个浏览器窗口中重复文件下载操作可以正常工作(最终成功下载,文件的有效 zip 存档)和所有后续文件下载尝试也成功,在该浏览器实例的剩余生命周期内没有进一步的问题。如果用户关闭他们的浏览器(必须关闭所有 Chrome 实例)然后重新打开浏览器导航到该站点的 Chrome,浏览器再次出现首次处理错误,然后从那时起在余生中正常工作那个浏览器窗口。

注意:必须关闭 Chrome 浏览器的所有实例才能再次重现该问题。如果用户在他们的计算机上打开一个 Chrome 实例,然后使用新的浏览器窗口导航到该站点并重试文件下载,则没有问题。也许 Chrome 正在缓存某种身份验证令牌?我故意回避使用“会话”一词,因为该行为似乎与会话无关。在 Chrome 中打开一个新选项卡(在经历了上述首次处理行为之后)并导航到该站点(在一个新会话中达到高潮)不会出现此问题。

火狐

Firefox 在尝试从站点下载文件时显示“安全连接失败”错误消息。所有后续尝试继续失败。这与 Chrome 的仅首次处理行为不同。将 Firefox 高级首选项“network.http.spdy.enabled.http2”从 true(默认值)修改为 false 可以永久解决该问题。

即 11

IE 11 完全没有失败。IE 11 的默认安装未更改任何浏览器设置。

Mac 浏览器

Mac 用户报告说文件下载尝试似乎成功,但尝试打开 zip 存档在 Mac 环境中达到高潮,认为 zip 存档受密码保护。注意:在处理下载请求的代码中,没有明确为 zip 存档分配密码。Windows 环境中没有用户报告此行为。

SSRS 报告显示

该站点具有允许登录用户显示在运行时从 SSRS 创建的 PDF 文档的功能。PDF 直接显示在浏览器窗口中(而不是立即启动下载操作)。

铬合金

当用户尝试显示 SSRS 报告时,Chrome 会显示类似的首次处理错误。浏览器显示以下错误消息:“错误加载 PDF 文档失败。” 错误消息有一个“重新加载”按钮,最终导致报告成功显示。随后在同一浏览器窗口中显示报告的所有尝试都成功,没有进一步的问题。当用户关闭并重新打开 Chrome 到该站点并重试报告显示时,再次体验到首次处理行为。

注意:有趣的是,在具有任一功能(文件下载或 SSRS 报告显示)的 Chrome 中,一旦用户遇到了任一功能的首次处理问题,那么另一个功能在该功能的生命周期内都可以正常工作浏览器实例。示例:用户打开新的 Chrome 实例,导航到站点并尝试下载文件。第一次下载文件会失败。立即尝试显示报告成功......反之亦然。

火狐

Firefox 显示与文件下载功能相同的“安全连接失败”错误消息。将相同的 Firefox 高级首选项“network.http.spdy.enabled.http2”从 true(默认值)修改为 false 可以永久解决该问题。

即 11

IE 11 完全没有失败。IE 11 的默认安装未更改任何浏览器设置。

标签: asp.netsslwindows-server-2016iis-10

解决方案


推荐阅读