【问题标题】:Why is URL query string value causing "Can't reach this page" or "This site can't be reached" error?为什么 URL 查询字符串值会导致“无法访问此页面”或“无法访问此站点”错误?
【发布时间】:2026-01-27 01:30:01
【问题描述】:

我使用的旧版 ASP.NET Web 应用程序具有使用查询字符串值在页面之间传递信息的 URL。我遇到了几个包含空格、数字和破折号的 URL 的问题。

这是一个 URL 示例:

http://myserver.com/SelectReport.aspx?Name=My Report&ReportFile=my_financial_report&ReportTitle=My Financial Planning Across A 1-Year Or 2-Year Outlook

URL 的问题部分是 ReportTitle 查询字符串值。

当我在 Internet Explorer 11 或 Microsoft Edge 中单击链接时,我收到 Cant' reach this page. It took too long to connect to this website. Error Code: INET_E_CONNECTION_TIMEOUT 错误。应该注意的是,如果我在 Internet Explorer 11 中打开 ON 兼容性视图设置,该链接可以正常工作。

当我在 Google Chrome 中单击该链接时,我收到“无法访问此站点。连接被重置。 ERR_CONNECTION_RESET”错误。

如果我删除2-Year 中的2,则链接有效。但是,如果我删除1-Year 中的1 并单独留下2-Year,则链接不起作用。 我想知道为什么删除2-Year 中的2 允许链接工作,但删除1-Year 中的1 却不能。无论我是否用%20 替换空格都是如此。有人知道答案吗?

我知道我可以用加号 (+) 替换 ReportTitle 查询字符串值中的空格,这样就可以了。这可能是我解决问题的方法,但我希望能更好地理解问题。

谢谢!

【问题讨论】:

  • 顺便问一下查询参数应该用&' instead of ?`分隔,第一个除外。
  • 我的错误@fiveelements。我会编辑帖子并修复它。
  • 没关系。但是,我已经在以我的域为目标的各种浏览器中尝试了此 URL,但没有收到错误消息。 - 被认为是 URL 中的安全字符。 URL 中的空格无效,因此浏览器将其替换为%20,或者您可以手动将其替换为+。两者都是一样的。你的最后两段令人困惑。你是说%20 不起作用但+ 会起作用。请说清楚。参考这个Safe characters in URL
  • 在 web 应用程序中,链接是在代码中生成的。如果我将生成链接的代码中的空格替换为“%20”,发布代码,然后单击链接,页面仍然超时。如果我在代码中用“+”替换空格,发布它,然后单击链接,链接不会超时。如果ReportTitle 值包含类似1-Year or 2-Year 的内容,其中一个数字后跟一个破折号,然后再跟另一个数字和一个破折号,则链接不起作用。如果我在该示例中删除了2,显示为1-Year or -Year,则链接出于某种原因有效。
  • 在生成链接的代码中是否发生了某种 URL 编码/解码?请您尝试将这些 URL 放在纯静态 HTML 中并尝试(按原样使用 spaces,使用 %20 替换空格,并使用 + 替换空格)。

标签: html asp.net url


【解决方案1】:

这是我在原帖中的 cmets 的延续。我正在写这个答案来分享演示示例。这可能不是一个完整的答案。

当你有空格,或者空格被%20替换或者空格被+替换时,绝对没有区别。另外,我之前提到您的 URL 包含有效字符,包括 -

请参阅下面的三个链接。我怀疑是您的应用程序正在处理 URL 编码、解码和出现问题。这不是一般问题。

<a href="http://*.com?Name=My Report&ReportFile=my_financial_report&ReportTitle=My Financial Planning Across A 1-Year Or 2-Year Outlook">With Spaces</a>
<br>
<a href="http:///*.com?Name=My%20Report&ReportFile=my_financial_report&ReportTitle=My%20Financial%20Planning%20Across%20A%201-Year%20Or%202-Year%20Outlook">With %20</a>
<br>
<a href="http:///*.com?Name=My+Report&ReportFile=my_financial_report&ReportTitle=My+Financial+Planning+Across+A+1-Year+Or+2-Year+Outlook">With +</a>

【讨论】: