在 XML 中未正确解释特殊字符组合 “?/”

本文关键字:组合 特殊字符 解释 XML | 更新日期: 2023-09-27 18:36:02

对于我们的顶部菜单,我们使用一个自定义控件,该控件本质上是从XML文件中读取的。控件的名称为 SCS.MultiMenu

其中一个菜单项是报表,其链接如下:

http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport

使用该 URL 正确生成报告。

因此,在 XML 文件中,菜单项如下所示:

<MenuItem Text="My report"  
Url="http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/Report"
PostBack="False"/>

当我单击此菜单项时,我被重定向到以下链接,这是不正确的: http://myserver/ReportServer/Pages/ReportViewer.aspx? 如您所见,它删除了问号后的所有内容。

我尝试使用转义序列来查看它是否接受正确的 URL(即? 表示问号 (?) 和/表示斜杠),但它继续剪切"?"之后的所有内容。我尝试了这样的事情:

http://MyServer/ReportServer/Pages/ReportViewer.aspx&#63;&#47;Folder/MyReport

问题可能是什么?我甚至尝试将每个角色切换到 escpae 序列,但没有奏效。

我认为这可能是此菜单控件中的错误,但这没有意义。

包括我尝试过的所有内容以及单击它时 URL 的外观:

http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?
http://MyServer/ReportServer/Pages/ReportViewer.aspx?path=%2FFolder%2FReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?path=/Folder/Report&
http://MyServer/ReportServer/Pages/ReportViewer.aspx&#63;&#47;Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=&
http://MyServer/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport  
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport&

谢谢

在 XML 中未正确解释特殊字符组合 “?/”

库以特殊方式处理菜单项的 url:

从 url 中剪切查询字符串并解析它:

  1. &拆分为单个参数
  2. =拆分为名称值对。

(见QueryString.cs

如果在步骤 2 中不存在=,则以静默方式丢弃参数,这就是为什么查询字符串/Folder/Report消失。

您可以尝试/Folder/Report==/Folder/Report是否在这种治疗中幸存下来并被您的服务器接受。